我被要求使用pyodbc下载一些数据,但是我有一些问题,下面是代码:
import pyodbc
import pandas as pd
conn = pyodbc.connect("Driver={SQL Server};"
"Server=database.net;"
"Database=Spectrometry;"
"uid=user;pwd=password")
Users = pd.read_sql("SELECT * FROM Users", conn)
Activity = pd.read_sql("SELECT * FROM Activity", conn)
执行后,我得到:
InterfaceError: ('IM002', '[IM002] [Microsoft] [ODBC Driver Manager]数据源名称未找到且未指定默认驱动程序(0)(SQLDriverConnect)")
我觉得你在写代码时可能犯了一个小错误。查看文档和可用的示例。
我认为应该是:
import pyodbc
import pandas as pd
conn = pyodbc.connect("Driver=SQL Server;" # <= No {} needed
"Server=database.net;"
"Database=Spectrometry;"
"uid=user;pwd=password")
Users = pd.read_sql("SELECT * FROM Users", conn)
Activity = pd.read_sql("SELECT * FROM Activity", conn)
我可能要补充的另一件事是,您是否检查了您的设置上可用的odbc驱动程序?我建议你运行:
import pyodbc
pyodbc.drivers()
它应该为您提供可用驱动程序名称的列表(您需要在connect方法上指定的名称)。如果列表为空,您可能需要研究如何在您的环境中安装odbc驱动程序。对于sql server版本15,它们可以在这里获得。
连接字符串
使用实例名连接到命名实例instance1:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102instance1;DATABASE=master;UID=sql2008;PWD=password123')
使用TCP/IP连接指定实例,端口号为1443:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102,1443;DATABASE=master;UID=sql2008;PWD=password123')
pyodbc.connect()支持关键字,我认为这些更容易阅读,如果你使用变量作为连接字符串属性,你不必做任何字符串格式化:
命名的实例:
connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102instance1',
database='master',
uid='sql2008',pwd='password123')
TCP/IP端口:connSqlServer = pyodbc.connect(driver='{SQL Server Native Client 10.0}',
server='192.106.0.102,1443',
database='master',
uid='sql2008',pwd='password123')