beschädigt Ich benutze Postgres auf Ubuntu und verwenden Sie unixodbc und pyodbc 4.0.16, um auf die Daten zuzugreifen. Ich habe anscheinend ein Problem im Zusammenhang mit Unicode. Bei der Abfrage der DB scheinen die Spaltenüberschriften beschädigt zu sein.Spaltenüberschriften sind bei der Abfrage mit pyodbc unter Ubuntu
Hier ist ein Beispiel:
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',)]
Ich bin nicht sicher, was das Problem ist. BTW - genau das gleiche Verhalten wird auf meinem Mac (El Capitan) beobachtet.
Dank im Voraus, Alex
Vielleicht versuchen 'conn.setdecoding (pyodbc.SQL_WMETADATA, encoding = 'utf-32le') 'zusätzlich zu den 'setdecoding'-Aufrufen, die Sie bereits haben. –
Auch 'print (conn.getinfo (pyodbc.SQL_DRIVER_NAME) + '' + conn.getinfo (pyodbc.SQL_DRIVER_VER))' und sagen Sie uns, was es sagt. –
Das Hinzufügen von conn.setdecoding (pyodbc.SQL_WMETADATA, encoding = 'utf-32le') hat das Problem gelöst! – user975383