PyODBC SQL Anywhere 17 Conect to Sybase Kernel Dies.

问题描述 投票:0回答:1

我在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()
python database kernel pyodbc sqlanywhere
1个回答
0
投票

由于我没有找到一个很好的解释,我把这个在这里。

我安装的客户端从

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) 

而且它的工作。

© www.soinside.com 2019 - 2024. All rights reserved.