通过Python连接SQLAnywhere的问题:sqlanydb.OperationalError:分析错误:找不到.



恐怕这可能只是配置问题,但也可能是编码问题。然而,我正在尝试使用Python和sqlanydb连接数据库。SQLAnywhere安装在/opt/sybase中,Shell正在获取sa_config.sh文件。

与正常工具的连接工作良好:例如通过

dbisql -c "uid=dba;pwd=sql;eng=mydemo"

然而,当我尝试用在Python中执行此操作时

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ctypes
import sqlanydb
def main(args):
    db1 = sqlanydb.connect( userid="DBA",
                            password="sql",
                            DataSourceName="mytest")
    db1.close
    return 0
if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

失败了

Traceback (most recent call last):
  File "./myfile.py", line 52, in <module>
    sys.exit(main(sys.argv))
  File "./myfile.py", line 42, in main
    DataSourceName="mytest")
  File "/usr/local/lib/python2.7/dist-packages/sqlanydb.py", line 461, in connect
    return Connection(args, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlanydb.py", line 510, in __init__
    self.handleerror(*error)
  File "/usr/local/lib/python2.7/dist-packages/sqlanydb.py", line 520, in handleerror
    eh(self, None, errorclass, errorvalue)
  File "/usr/local/lib/python2.7/dist-packages/sqlanydb.py", line 342, in standardErrorHandler
    raise errorclass(errorvalue)
sqlanydb.OperationalError: Parse error: Cannot find .ini file

我查看了sqlanydb的来源,但目前没有找到任何对.ini文件的引用。那么,让ASA16与sqlanydb一起运行的正确方法是什么呢?

如果没有~/.odbc.ini文件,就会出现这个错误。您正在指定"DataSourceName=mytest",这告诉SQL Anywhere ODBC驱动程序在~/.odbc.ini中查找名为mytest的DSN,但找不到.ini文件。

使用dbdsn实用程序可以创建有问题的DSN。

全面披露:我在SAP的SQL Anywhere工程部门工作

最新更新