无法从服务器下载 SQL 数据库
Unable to download SQL database from server
有人要求我使用 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]
Data source name not found and no default driver specified (0)
(SQLDriverConnect)')
我觉得您在编写代码时可能犯了一个小错误。查看 documentation 和示例可用。
我认为应该是:
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()
它应该会为您提供可用驱动程序名称的列表(您需要在连接方法中指定的名称)。如果列表为空,您可能需要查看如何在您的环境中安装 odbc 驱动程序。
对于 sql 服务器版本 15,它们可用 here。
连接字符串
正在使用实例名称连接到命名实例 instance1:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102\instance1;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.102\instance1',
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')
有人要求我使用 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] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
我觉得您在编写代码时可能犯了一个小错误。查看 documentation 和示例可用。
我认为应该是:
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()
它应该会为您提供可用驱动程序名称的列表(您需要在连接方法中指定的名称)。如果列表为空,您可能需要查看如何在您的环境中安装 odbc 驱动程序。 对于 sql 服务器版本 15,它们可用 here。
连接字符串
正在使用实例名称连接到命名实例 instance1:
connSqlServer = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=192.106.0.102\instance1;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.102\instance1',
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')