Я пытаюсь использовать библиотеку Python SQLAlchemy для запроса базы данных Teradata. Я смог создать движок, используя следующий код.
from sqlalchemy import create_engine
td_engine = create_engine('teradata://' + 'usrname' + ':' + 'pswrd' + '@' + 'myOdbcDataSource' + ':22/?charset=UTF8')
Но когда я пытаюсь использовать двигатель, я получаю следующую ошибку.
ValueError: символ U + 590048 не находится в диапазоне [U + 0000; U + 10FFFF]
Эта ошибка возникает при использовании всех функций, которые взаимодействуют с базой данных, которые я пробовал. Например, я получаю эту ошибку, когда пытаюсь выполнить следующее.
sqlStr = 'select top 1000 * from myTable;'
result = td_engine.execute(sqlStr)
В качестве другого примера я получаю ту же ошибку при попытке выполнить следующее.
td_engine.table_names('mySchema')
Журнал непосредственно перед ошибкой указывает на подключение к базе данных с использованием драйвера ODBC, поэтому мне интересно, связано ли это с тем, как я настроил драйвер ODBC. Ниже мой файл odbc.ini, расположенный в / Library / ODBC / на моем Mac.
[ODBC Data Sources]
myodbca = MySQL ODBC 5.3 ANSI Driver
myodbc = MySQL ODBC 5.3 Unicode Driver
myOdbcDataSource = Teradata Database ODBC Driver 16.20
[myOdbcDataSource]
Driver = /Library/Application Support/teradata/client/16.20/lib/tdataodbc_sbu.dylib
DBCName = myUrl
DefaultDatabase = myDb
UserName = usrname
Password = pswrd
CharacterSet = UTF8
У кого-нибудь есть идеи, как исправить эту ошибку Unicode и заставить работать движок SQL Alchemy Teradata? Заранее спасибо.