我在Ubuntu 18.04上工作,当我使用Pyodbc连接与SQL Anywhere 17驱动程序连接到Sybase DB时,当试图建立连接时,我的Jupyter笔记本Dies.The期望是,我应该能够在Ubunt中运行此代码并连接到Sybase DB。
我可以从Windows连接和运行查询没有问题(使用DSN)。
我一直在使用其他驱动程序和SQL Server,MySQL和MariaDB,我没有遇到任何问题。我相信连接到Sybase数据库需要SQLANYWHERE DRVIER。
如果有人知道当我使用DSN时,如何获得从pyodbc传递到服务器的连接字符串?(也许这可以给我一个想法,知道我做错了什么)。
一些建议?
代码在windows下运行没有问题
import pyodbc
import pandas as pd
cnxn = pyodbc.connect("DSN=RevDSN")
print(cnxn)
data = pd.DataFrame(pd.read_sql_query(query, cnxn))
cnxn.close()
由于我没有找到一个很好的解释,我把这个在这里。
我安装的客户端从
https:/archive.sap.comdocumentsdocsDOC-35857。
然后按照
https:/wiki.scn.sap.comwikidisplaySQLANY安装+SQL+Anywhere+17+on+Ubuntu+14.04。
ODBC客户端不会要求提供密钥。
正如文档中所说,最重要的部分是运行sa_config.sh,并确保导出发生。
最后编辑 etcodbcinst.ini 文件并添加驱动程序。
例如
[SQL Anywhere 17]
Driver=/opt/sqlanywhere17/lib64/libdbodbc17.so
TDS_Version=5.0
UsageCount=1
然后我使用了这个连接字符串
import pyodbc
cnxn = pyodbc.connect('Driver={SQL Anywhere 17};LINKS=TCPIP{HOST=<server ip here>};PORT=2638;UID=admin;PWD=<password here>;ENG=<engine name>;DBN=<database name>;')
cursor = cnxn.cursor()
cursor.execute("select top 10 * from dba.<table name>")
for row in cursor:
print(row)
而且它的工作。