提问者:小点点

Python-Pyodbc for SQL Anywhere 16?


我正在尝试使用Pyodbc通过python连接到数据库,如下所示:

import pyodbc
import pandas as pd

conn = pyodbc.connect('Driver={SQL Anywhere 16};'
                      'Server=***.**.**.***;'
                      'Database=**********;'
                      'Trusted_Connection=yes;'
                      )

Data = pd.read_sql_query("SELECT * FROM * WHERE Date='20180328'", conn)
print(Data)

但是收到错误:

第4行,在conn=pyodbc中。connect('Driver={SQL Anywhere 16};'pyodbc.Error:('08001','[08001][Sybase][ODBC Driver][SQL Anywhere]未找到数据库服务器(-100)(SQLDriverConnect))

我在Windows上有一个ODBC配置,带有驱动程序“SQLAnywhere 16”,我可以使用这个ODBC连接通过SquirrelSQL进行连接-有什么想法吗?


共1个答案

匿名用户

对我来说,这看起来像是连接字符串的问题。也许我错了,但是看起来你面临的错误是没有找到服务器,基于这个错误,看起来就像你只是把驱动程序=SQLAnywhere 16传递到它。

我提到这一点是因为在这个问题:连接到MSSQL服务器与Windows身份验证使用Python?

它们详细说明了答案中多行字符串的以下内容

conn_str = (
r'Driver={SQL Server};'
r'Server=.\SQLEXPRESS;'
r'Database=myDB;'
r'Trusted_Connection=yes;'
)

cnxn=pyodbc。连接(连接街)

此外,当搜索多行字符串时,我们在这里看到了这个答案:如何在Python中正确编写原始多行字符串?

哪些细节:

每个字符串文本都需要一个r前缀

(r'on\e'
     r'\tw\o')
'on\\e\\tw\\o'

否则,第一部分将被解释为原始字符串文字,但字符串的下一行不是,因此“\t”将被解释为制表符。

因此,请尝试在该文本字符串的每一行前面加上一个r,使其更像

import pyodbc
import pandas as pd

conn = pyodbc.connect(r'Driver={SQL Anywhere 16};'
                      r'Server=***.**.**.***;'
                      r'Database=**********;'
                      r'Trusted_Connection=yes;'
                      )

Data = pd.read_sql_query("SELECT * FROM * WHERE Date='20180328'", conn)
print(Data)

看看这是否能解决你的问题。

编辑:我编辑来修复格式。