小能豆

使用 Python 连接到 Microsoft SQL 服务器

py

我正在尝试通过 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)')

阅读 30

收藏
2024-10-03

共1个答案

小能豆

您遇到的错误消息表明您的连接字符串中指定的 ODBC 驱动程序未安装或引用不正确。连接字符串格式以及您指定它的方式也存在一些问题。

修复代码的方法如下:

  1. 使用正确的 ODBC 驱动程序:确保安装了适当的 ODBC 驱动程序。对于 SQL Server,通常建议使用ODBC Driver 17 for SQL Server。如果您尚未安装,可以从Microsoft网站下载。
  2. 更正连接字符串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()

解释:

  1. ODBC 驱动程序:确保您使用的驱动程序已安装在您的系统上。SQL Server 的常见驱动程序包括:

  2. ODBC Driver 17 for SQL Server

  3. SQL Server Native Client 11.0
  4. SQL Server

您可以通过运行以下代码来检查已安装的驱动程序:

import pyodbc print(pyodbc.drivers())

  1. 连接字符串:连接字符串使用格式化字符串构建,以提高可读性和正确性。使用f-strings 替换服务器和数据库名称。

  2. 受信任的连接:使用Trusted_Connection=yes允许您使用 Windows 身份验证进行连接。确保您的 Python 脚本在有权访问 SQL Server 的帐户下运行。

  3. 执行查询:您可以执行 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;" )

尝试使用适当的服务器和数据库名称运行更新后的代码,它应该可以正常工作。如果您遇到任何其他问题,请随时寻求更多帮助!

2024-10-03