sqlanydb Windows无法加载dbcapi

时间:2018-10-09 14:51:52

标签: python sqlanywhere sqlanydb

我正在尝试通过python连接到SQL Anywhere数据库。我已经创建了DSN,并且可以使用命令提示符使用dbisql - c "DNS=myDSN"连接到数据库。当我尝试使用con = sqlanydb.connect(DSN= "myDSN")通过python连接时 我得到

`Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    con = sqlanydb.connect(DSN= "RPS Integration")
  File "C:\Python27\lib\site-packages\sqlanydb.py", line 522, in connect
    return Connection(args, kwargs)
  File "C:\Python27\lib\site-packages\sqlanydb.py", line 538, in __init__
    parent = Connection.cls_parent = Root("PYTHON")
  File "C:\Python27\lib\site-packages\sqlanydb.py", line 464, in __init__
    'libdbcapi_r.dylib')
  File "C:\Python27\lib\site-packages\sqlanydb.py", line 456, in load_library
    raise InterfaceError("Could not load dbcapi.  Tried: " + ','.join(map(str, names)))
InterfaceError: (u'Could not load dbcapi.  Tried: None,dbcapi.dll,libdbcapi_r.so,libdbcapi_r.dylib', 0)`

3 个答案:

答案 0 :(得分:0)

我能够解决问题。我从未能够使用sqlanydb.connect。我最终使用了pyodbc。因此,我的最终连接字符串为con = pydobc.connect(dsn="myDSN")。我认为sqlanydb仅与sqlanydb 17完全兼容,并且我使用的是以前的版本。

答案 1 :(得分:0)

遇到OP显示的回溯的一种方法是运行64位Python解释器,该解释器无法加载32位dbcapi.dll。尝试使用“ py -X-32”启动以强制使用32位引擎,或者使用32位python引擎重新安装。

不幸的是,试图精巧地查找dbcapi的sqlanydb代码也最终吞噬了加载过程中引发的异常。 sqlanydb作者可能认为加载失败意味着找不到文件,并非总是如此。

答案 2 :(得分:0)

根据本地安装 Sybase 的方式,也可能是 Python 模块在您的 dbcapi.dll 中查找 PATH 时确实找不到(正确的)库。对此的快速解决方法是创建一个包含正确路径的新 SQLANY_API_DLL 环境变量(that's the initial None in the names the error message says it tried using;它优先于所有其他变量),通常类似于 %SQLANY16%\Bin64\dbcapi.dll 取决于您的版本已安装(Sybase 通常会在每个版本的基础上创建一个指向其安装文件夹的环境变量)。