J'utilise postgres sur ubuntu et j'utilise unixodbc et pyodbc 4.0.16 pour accéder aux données. Je semble avoir un problème lié à unicode. Lors de l'interrogation du DB, les en-têtes de colonne semblent être endommagés.les en-têtes de colonne sont endommagés lors d'une requête avec pyodbc sur Ubuntu
Voici un exemple:
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',)]
Je ne suis pas sûr de ce que la question est. BTW - exactement le même comportement est observé sur mon mac (el capitan).
Merci à l'avance, Alex
Peut-être essayer 'conn.setdecoding (pyodbc.SQL_WMETADATA, encoding = 'utf-32LE') 'en plus des appels' setdecoding' que vous avez déjà. –
Aussi, 'print (conn.getinfo (pyodbc.SQL_DRIVER_NAME) + '' + conn.getinfo (pyodbc.SQL_DRIVER_VER))' et dites-nous ce qu'il dit. –
L'ajout de conn.setdecoding (pyodbc.SQL_WMETADATA, encoding = 'utf-32le') a en effet résolu le problème! – user975383