PyODBC SQL Anywhere 17与Sybase内核的连接失效



当我使用带有SQL Anywhere 17驱动程序的Pyodbc连接连接到Sybase数据库时,我正在Ubuntu 18.04上工作,同时尝试建立连接我的Jupyter笔记本Dies。我的期望是,我应该能够在Ubunt中运行这段代码,并连接到Sybase数据库。

我可以从Windows连接并运行查询而不会出现问题(使用DSN(。

我一直在使用其他驱动程序和SQL Server、MySQL和MariaDB,我没有遇到任何问题。我认为连接到Sybase数据库需要SQLANYWHERE DRVIER。

如果有人知道当我使用DSN时,如何获取从pyodbc传递到服务器的连接字符串?(也许这能让我知道自己做错了什么(。

一些建议?

代码在窗口中运行而没有问题

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.com/documents/docs/DOC-35857

然后按照的基本指令

https://wiki.scn.sap.com/wiki/display/SQLANY/Installing+SQL+Anywhere+17+on+Ubuntu+14.04

ODBC客户端不会要求密钥

正如文档所说,重要的部分是运行sa_config.sh并确保进行导出。

最后编辑/etc/odbcinst.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) 

它奏效了。

相关内容

  • 没有找到相关文章

最新更新