Python pyodbcunicode查询失败

Python pyodbcunicode查询失败,python,unicode,pyodbc,vertica,Python,Unicode,Pyodbc,Vertica,我正在使用pyodbc连接到Vertica。 我已经安装了Vertica驱动程序、unixodbc和pyodbc 现在我遇到了executinq unicode查询的问题 con = pyodbc.connect('Driver={driver};Servername={server};Port={port};Database={db};UserName={user};password={password}'.format(...)) cur = con.cursor() cur.execute

我正在使用pyodbc连接到Vertica。 我已经安装了Vertica驱动程序、unixodbc和pyodbc

现在我遇到了executinq 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)')

您使用的是什么版本的pyodbc和python?什么操作系统

尝试将python代码中的第一行用作#——编码:utf-8——

并更新pyodbc
sudo pip安装--升级pyodbc看起来像是在
vertica.ini
文件中定义的错误编码(或
odbc.ini
中的错误
locale
设置)

vertica.ini
odbc.ini
我赌vertica.ini。我没有要检查的MacOS,但根据文档,您需要定义
UTF-32
。您能发布您的
vertica.ini
abd
odbc.ini
+数据库区域设置吗

HP Vertica

有关更多信息,请阅读。

看起来此驱动程序需要一个编码字符串而不是unicode字符串。您是否尝试过
.encode('utf-8')
?是@woot,我尝试过,但没有work@user1263702对不起,我没有答案给你。。。我自己在unixodbc上遇到过各种各样的unicode问题。我转而使用Uber编写的vertica_python。()您可能想阅读关于如何执行绑定参数的文档(如果我没记错的话,需要编译postgresql libs)。我正在mac os x 10.9.4上使用pyodbc 3.0.7的python 2.7.5
[Driver]
DriverManagerEncoding=UTF-16
...
...
Locale                      = en_US@collation=binary
...
daniel=> show locale;
  name  |               setting            
--------+--------------------------------------
 locale | en_US@collation=binary (LEN_KBINARY)
(1 row)