私はubuntuでpostgresを使用しており、unixodbcとpyodbc 4.0.16を使用してデータにアクセスしています。私はユニコードに関する問題があるようです。 DBにクエリを実行すると、列ヘッダーが壊れているように見えます。Ubuntuでpyodbcを使用してクエリを実行すると、カラムヘッダーが破損する
import pyodbc
conn = pyodbc.connect("DSN=local_postgres")
conn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
conn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
#conn.execute('create schema test')
conn.execute('create table test.uni_test(column1 varchar)')
conn.execute("insert into test.uni_test(column1) values ('My value')")
results = conn.execute('select * from test.uni_test')
print results.description
columns = [column[0].decode('latin1') for column in results.description]
print "columns: " + str(columns)
print list(results)
Result:
((u'c\x00\x00\x00o\x00\x00', <type 'str'>, None, 255, 255, 0, True),)
columns: [u'c\x00\x00\x00o\x00\x00']
[(u'My value',)]
私は問題が何であるかわからない:
は、ここでの例です。 BTW - まったく同じ動作が私のmac(el capitan)で観察されます。予め
おかげで、アレックス
はおそらく '(pyodbc.SQL_WMETADATA、エンコード= 'UTF-32LE' をconn.setdecodingを試す必要がありました) 'あなたがすでに持っている' setdecoding'呼び出しに加えて。 –
また、 'print(conn.getinfo(pyodbc.SQL_DRIVER_NAME)+ '' + conn.getinfo(pyodbc.SQL_DRIVER_VER))'と言って、それが何であるか教えてください。 –
conn.setdecoding(pyodbc.SQL_WMETADATA、encoding = 'utf-32le')を追加すると、実際に問題が解決しました。 – user975383