Python pydbc通过ODBC连接返回字符串值中每个字母之间的空字符
我有一个最奇怪的问题。 我正在通过ODBC连接到Vertica数据库使用pyodbc 4.0.30版本 在MAC上也使用python 2.7版 我插入字符串值,例如:“daniel”,当执行select时,我得到一个每个字母之间都有空字符的值 这是我的odbc.ini文件Python pydbc通过ODBC连接返回字符串值中每个字母之间的空字符,python,odbc,pyodbc,vertica,Python,Odbc,Pyodbc,Vertica,我有一个最奇怪的问题。 我正在通过ODBC连接到Vertica数据库使用pyodbc 4.0.30版本 在MAC上也使用python 2.7版 我插入字符串值,例如:“daniel”,当执行select时,我得到一个每个字母之间都有空字符的值 这是我的odbc.ini文件 [ODBC Data Sources] vertica = Vertica [vertica] Driver = /Library/Vertica/ODBC/lib/libverticaod
[ODBC Data Sources]
vertica = Vertica
[vertica]
Driver = /Library/Vertica/ODBC/lib/libverticaodbc.dylib
Database = qa
ServerName = serverName
Port = 5433
UID = dbadmin
PWD = pass
DriverStringConversions = NONE
ColumnsAsChar = true
[ODBC]
Trace = 0
TraceAutoStop = 0
TraceFile = /Users/daniel/sql.log
TraceDLL =
字符串的返回值假设为'daniel',我得到以下ascii值
[49,0,100,0,115,0,102,0,115,0,100,0,102,0]
而不是
[49100115102115100102]
尝试了所有DriverStringConversions配置,但没有任何更改。
我知道这很难实现,但你知道为什么会发生这种情况吗?这看起来像是编码问题。你似乎得到了UTF-16LE而不是UTF-8。为了使我的Vertica字符串前后正确,在调用任何针对Vertica使用ODBC的程序之前,我有以下配置: 导出ODBCSTACK=$HOME/ODBCSTACK 导出ODBCHOME=$ODBCSTACK/uodbc 导出ODBCSYSINI=$ODBCHOME/etc 导出ODBCINI=$ODBCSYSINI/odbc.ini 导出VERTICAINI=$ODBCSYSINI/vertica.ini 加上一些LD_LIBRARY_路径和路径设置 我的vertica.ini如下所示: [司机] Locale=en_US ODBCInstLib=/home/dbadmin/odbcstack/uodbc/lib/libodbcinst.so ErrorMessagesPath=/opt/vertica DriverManager编码=UTF-16 LogPath=/tmp 日志名称空间= 日志级别=0 如果没有vertica.ini,我就不会从vertica收到任何明显的错误消息,字符编码可能会欺骗我
试试看 这看起来像是编码问题。你似乎得到了UTF-16LE而不是UTF-8。为了使我的Vertica字符串前后正确,在调用任何针对Vertica使用ODBC的程序之前,我有以下配置: 导出ODBCSTACK=$HOME/ODBCSTACK 导出ODBCHOME=$ODBCSTACK/uodbc 导出ODBCSYSINI=$ODBCHOME/etc 导出ODBCINI=$ODBCSYSINI/odbc.ini 导出VERTICAINI=$ODBCSYSINI/vertica.ini 加上一些LD_LIBRARY_路径和路径设置 我的vertica.ini如下所示: [司机] Locale=en_US ODBCInstLib=/home/dbadmin/odbcstack/uodbc/lib/libodbcinst.so ErrorMessagesPath=/opt/vertica DriverManager编码=UTF-16 LogPath=/tmp 日志名称空间= 日志级别=0 如果没有vertica.ini,我就不会从vertica收到任何明显的错误消息,字符编码可能会欺骗我
试试看 看起来您需要调整编码设置。详细信息。看起来您需要调整编码设置。细节。