我正在尝试使用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驱动程序] [SQL Anywhere]数据库服务器 未找到(-100)(SQLDriverConnect)')
我在Windows上使用驱动程序" SQL Anywhere 16"我可以使用这个ODBC连接通过Squirrel SQL连接 - 有关于此的任何想法吗?
答案 0 :(得分:1)
这似乎是您与我的连接字符串存在问题。也许我是错的,但是它看起来像您遇到的错误是找不到服务器,并且基于该错误,看起来好像您只是将Driver=SQL Anywhere 16
传递给了它。
我之所以这样说是因为在这个问题中:Connecting to MS SQL Server with Windows Authentication using Python?
它们详细说明了答案中多行字符串的内容
conn_str = (
r'Driver={SQL Server};'
r'Server=.\SQLEXPRESS;'
r'Database=myDB;'
r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)
另外,当搜索多行字符串时,我们在这里看到以下答案:How to correctly write a raw multiline string in 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)
然后查看是否可以解决您的问题。
编辑:我进行了编辑以修复格式。