TLDR:不要使用unicode驱动程序,请使用ansi!
我想通过TurbODBC而不是Pandas / SQLAlchemy连接到数据库。
我现在做了什么:
现在我尝试执行以下操作:
from turbodbc import connect
connect(dsn="mydsn", user="myuser", password="mypass")
并收到以下错误消息:
---------------------------------------------------------------------------
DatabaseError Traceback (most recent call last)
<ipython-input-2-bbbc3a4c2880> in <module>()
----> 1 connect(dsn="mydsn", user="myuser", password="mypass")
/Users/myuser/anaconda2/lib/python2.7/site-packages/turbodbc/exceptions.pyc in wrapper(*args, **kwds)
31 return f(*args, **kwds)
32 except InternError as e:
---> 33 raise DatabaseError(str(e))
34 return wrapper
DatabaseError: ODBC error
state: H
我现在不知道该怎么做,也没有发现有关此错误的任何问题。
如果有人能帮助我,我会非常高兴,提前谢谢! ; - )
我和RODBC一起试过R,工作得很好。所以我确定这是TurbODBC的一个问题,但现在我无法调试(C ++我想的)代码....
我将设置文件.odbc.ini
中的Mysql Connector for ODBC驱动程序更改为ansi驱动程序。我认为这必须是unicode,因为数据库包含unicode表...但是使用ansi,当我使用ansi驱动程序在设置文件中通过手动将编码设置为utf8时,一切正常(仅)。不知道错误发生的原因或方式,但这种解决方法有效。
答案 0 :(得分:2)
以下是一些建议:
isql <dsn> <user> <password> -v
连接到您的数据库。odbc.ini
。这是通过export ODBCINI=/path/to/odbc.ini
完成的。odbc.ini
,直到isql
成功连接。然后再次尝试turbodbc。 如果您仍然认为这是一个错误,请在here报告。