我正在尝试通过 python 连接到 SQL,以在 Microsoft SQL 服务器上的一些 SQL 数据库上运行一些查询。从我在网上和这个论坛上的研究来看,最有希望的库似乎是 pyodbc。所以我写了以下代码
import pyodbc conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; database=+MSQLDatabase+; trusted_connection=true") cursor = conn.cursor()
并出现以下错误
Traceback (most recent call last): File "C:\Users...\scrap.py", line 3, in <module> conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; database=+MSQLDatabase+; trusted_connection=true") pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
您遇到的错误消息表明您的连接字符串中指定的 ODBC 驱动程序未安装或引用不正确。连接字符串格式以及您指定它的方式也存在一些问题。
ODBC Driver 17 for SQL Server
init_string
pyodbc.connect()
import pyodbc # Set your server name and database name here server_name = "your_server_name" # Replace with your actual server name database_name = "your_database_name" # Replace with your actual database name # Construct the connection string conn_str = ( f"DRIVER={{ODBC Driver 17 for SQL Server}};" f"SERVER={server_name};" f"DATABASE={database_name};" "Trusted_Connection=yes;" ) # Establish the connection conn = pyodbc.connect(conn_str) cursor = conn.cursor() # Now you can execute your queries # For example: cursor.execute("SELECT * FROM your_table_name") # Replace with your actual query for row in cursor: print(row) # Don't forget to close the cursor and connection cursor.close() conn.close()
ODBC 驱动程序:确保您使用的驱动程序已安装在您的系统上。SQL Server 的常见驱动程序包括:
SQL Server Native Client 11.0
SQL Server
您可以通过运行以下代码来检查已安装的驱动程序:
import pyodbc print(pyodbc.drivers())
连接字符串:连接字符串使用格式化字符串构建,以提高可读性和正确性。使用f-strings 替换服务器和数据库名称。
f
受信任的连接:使用Trusted_Connection=yes允许您使用 Windows 身份验证进行连接。确保您的 Python 脚本在有权访问 SQL Server 的帐户下运行。
Trusted_Connection=yes
执行查询:您可以执行 SQL 查询并根据需要处理结果。
防火墙问题:确保没有防火墙限制阻止与 SQL Server 的连接。
SQL Server 配置:如果您的脚本没有与 SQL Server 实例在同一台计算机上运行,请确保 SQL Server 配置为允许远程连接。
使用 SQL 身份验证
:如果您想使用 SQL Server 身份验证,您可以修改连接字符串以包含
UID
(用户名)和
PWD
(密码):
conn_str = ( "DRIVER={ODBC Driver 17 for SQL Server};" "SERVER=your_server_name;" "DATABASE=your_database_name;" "UID=your_username;" "PWD=your_password;" )
尝试使用适当的服务器和数据库名称运行更新后的代码,它应该可以正常工作。如果您遇到任何其他问题,请随时寻求更多帮助!