我正在使用 pyodbc 连接到 Vertica。 我已经安装了 Vertica 驱动程序、unixodbc 和 pyodbc。
现在我在执行 unicode 查询时遇到问题。
con = pyodbc.connect('Driver={driver};Servername={server};Port={port};Database={db};UserName={user};password={password}'.format(...))
cur = con.cursor()
cur.execute('SELECT * FROM table') # It works
cur.execute(u'SELECT * FROM table') # It fails
错误是:
ProgrammingError: ('42601', '[42601] ERROR 4856: Syntax error at or near " (4856) (SQLExecDirectW)')
最佳答案
看起来 vertica.ini
文件中定义的编码错误(或者 odbc.ini
中的 locale
设置错误)
vertica.ini
[Driver]
DriverManagerEncoding=UTF-16
...
odbc.ini
...
Locale = en_US@collation=binary
...
我押注于vertica.ini
。我没有 MacOS 要检查,但根据文档,您需要定义 UTF-32
。您可以发布您的 vertica.ini
abd odbc.ini
+ 数据库区域设置吗?
HP Vertica
daniel=> show locale;
name | setting
--------+--------------------------------------
locale | en_US@collation=binary (LEN_KBINARY)
(1 row)
<小时/>
有关更多信息,请阅读 here .
关于python - pyodbc unicode 查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325962/