У меня проблема с использованием pyobbc с сервером TeraData. Мое соединение perl, использующее одни и те же драйверы ODBC, работает без проблем.Как правильно установить кодировку/кодировку pyodbc TeraData?
Кажется, что pyodbc подключается, потому что я могу получить имена таблиц, однако имена таблиц не закодированы правильно (пример ниже). Вот список вещей, которые я пробовал:
- Установка кодирокой/Encoding в моем DSN как 'ASCII', 'UTF-8', и многие другие
Установка локали:
locale.setlocale (locale.LC_ALL, 'en_US.utf8')
Изменение автокоммит и ANSI = True/False»в pyodbc.connect()
Python == 3.4.3, pyodbc == 3.0.10
.odbc.ini:
[ODBC]
InstallDir=/opt/teradata/client/15.10/odbc_64
Trace=0
TraceDll=/opt/teradata/client/15.10/lib/odbctrac.so
TraceFile=/home/solberg/teratrace
TraceAutoStop=0
[ODBC Data Sources]
tera01=Teradata ODBC Driver 15.10
[tera01]
Driver=/opt/teradata/client/15.10/lib64/tdata.so
DBCName=tera01
Username=solberg
Authentication=LDAP
.odbcinst.ini:
[ODBC DRIVERS]
Teradata=Installed
[ODBC Translators]
OEB to ANSI=Installed
Python код:
import pyodbc
pyodbc.pooling = False
conn = pyodbc.connect('DSN=tera01;', password=pw)
cursor = conn.cursor()
cursor.tables()
rows = cursor.fetchall()
print(row[0].table_name)
扁 牯 䱴 獩 却 獥 楳 湯
print(row[0].table_name.encode('utf_16_le'))
b'AbortListSession '
conn.execute("SELECT DISTINCT column FROM table;").fetchall()
Ошибка: ('HY000',' [HY000] [UnixODBC] [Driver Manager] Driver вернулся SQL_ERROR или SQL_SUCCESS_WITH_INFO но нет сообщений об ошибках API не найдено (0) (SQLExecDirectW) ')