python - pyodbc unicode 查询失败

标签 python unicode pyodbc vertica

我正在使用 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/

相关文章:

python - 在 Mac 上 - pyodbc 不会从 mysql 获取长列

python - UnicodeEncodeError : 'latin-1' codec can't encode character '\u2013' (writing to PDF)

c++ - 不使用通用字符名直接在character-literal中放入unicode是否违法?

python - 将 SQL 故障转移合作伙伴与 pyodbc 结合使用

python - 包装同类 Python 对象

将斯堪的纳维亚字母正确读取到数据框中

python - 使用 PyInstaller got pyodbc 编译后如何修复启动时的错误?

python - 如何使用 OpenCV 交换图像中的蓝色和红色 channel

python - 对 bool 值 True 和 False 的算术运算的使用

python - 如何使用 Grouper 进行分组,但我想使用最近的日期作为频率的引用