Vro*_*oni 4 sybase pymssql python-3.x
我正在尝试连接到 Sybase 数据库并从中检索数据。我正在使用安装了 Anaconda 存储库的 Ubuntu 18.04 系统,并希望使用 Python 3.6。
\n\n我找到了一种使用 python-sybase 包从数据库检索数据的方法,但这依赖于 python 2.7,并且就我现在而言有点过时了。
\n\nimport Sybase\n\ndb = Sybase.connect(dsn = server:port, user = usr, passwd = pwd, database = db)\nc = db.cursor()\nc.execute("select var1,var2,var3 from xxx where datum=1yymmdd and statnr=stat1")\nlist1 = c.fetchall()\nprint list1\nRun Code Online (Sandbox Code Playgroud)\n\n该脚本的输出是这样的:
\n\n[(10.8, 100, 0), (11.2, 100, 5), (11.3, 100, 10), ..., ..., ...]\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试改用 pymssql 包,它与 python 3.x 兼容。
\n\nimport pymssql\nconn = pymssql.connect(server=serv:port,user=usr,password=pwd,database=db)\nprint(conn)\ncursor = conn.cursor()\ncursor.execute("select var1,var2,var3 from xxx where datum=1yymmdd and statnr=stat1")\nlist2 = cursor.fetchall()\nprint(list2) \nRun Code Online (Sandbox Code Playgroud)\n\n但在尝试连接到数据库后,已经收到以下错误消息,因为它不执行 print(conn):
\n\nTraceback (most recent call last):\nFile "src/pymssql.pyx", line 636, in pymssql.connect\nFile "src/_mssql.pyx", line 1957, in _mssql.connect\nFile "src/_mssql.pyx", line 707, in _mssql.MSSQLConnection.__init__\n_mssql.MSSQLDriverException: Could not set connection properties\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\nFile "/home/progs/Test_SYBASE.py", line 9, in <module>\nconn = pymssql.connect(server=serv,user=usr,password=pwd,database=db,port=prt)\nFile "src/pymssql.pyx", line 645, in pymssql.connect\npymssql.InterfaceError: Could not set connection properties\nRun Code Online (Sandbox Code Playgroud)\n\n所以我的问题实际上与连接本身有关。
\n\n我在 pymssql 手册中读到了错误消息,但不知道如何处理这个问题。
\n\n\n\n\n异常 _mssql.MSSQLDriverException\n 只要 _mssql \xe2\x80\x93 中出现问题,例如数据结构内存不足等,就会引发 MSSQLDriverException。
\n\n异常 pymssql.InterfaceError
\n
\n 因与数据库接口而不是数据库本身相关的错误而引发。错误的子类。
您对如何处理这个问题有什么建议吗?
\n\n感谢帮助!
\n找到了我的问题的解决方案:按照@GordThompson 的建议,我使用 pyodbc 和 FreeTDS 进行连接。我通过以下方式安装了 FreeTDS 驱动程序
sudo apt-get install freetds-dev freetds-bin unixodbc-dev tdsodbc
sudo dpkg-reconfigure tdsodbc
Run Code Online (Sandbox Code Playgroud)
正如这里建议的: https: //gist.github.com/rduplain/1293636
我的连接代码如下所示:
import pyodbc
serv = server
usr = user
passwd = password
db = database
prt = port
driver="FreeTDS"
conn = pyodbc.connect(driver=driver, server=serv, database=db,port = prt,
uid=usr, pwd=passwd)
print(conn)
cursor = conn.cursor()
cursor.execute("select var1,var2,var3 from xxx where datum=1yymmdd and statnr=stat1")
row = cursor.fetchall()
print(row)
Run Code Online (Sandbox Code Playgroud)
编辑:在我的 pymssql.connect() 调用中使用 conn_properties = '' 也可以,正如@GordThompson 所建议的那样。
import pymssql
conn =pymssql.connect(server=serv:port,user=usr,password=pwd,database=db, conn_properties='')
print(conn)
cursor = conn.cursor()
cursor.execute("select var1,var2,var3 from xxx where datum=1yymmdd and statnr=stat1")
list2 = cursor.fetchall()
print(list2)
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
| 归档时间: |
|
| 查看次数: |
12832 次 |
| 最近记录: |