【问题标题】:SQLAlchemy Unicode Error - Querying Teradata databaseSQLAlchemy Unicode 错误 - 查询 Teradata 数据库
【发布时间】:2018-10-06 01:40:00
【问题描述】:

我正在尝试使用 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 驱动程序的方式有关。下面是我位于 Mac 上 /Library/ODBC/ 的 odbc.ini 文件。

[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 引擎正常工作有任何想法?提前谢谢你。

【问题讨论】:

标签: python unicode sqlalchemy teradata


【解决方案1】:

尝试将编码调整为 UTF8:

from os import environ

environ["NLS_LANG"] = ".AL32UTF8"

【讨论】:

    猜你喜欢
    • 2014-07-08
    • 2017-11-01
    • 2020-03-11
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    相关资源
    最近更新 更多