You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pymssql查询SQL Server表报错:无效对象名,求解决方案

解决pymssql查询SQL Server表提示"Invalid object name"的问题

可行解决方案:

1. 用方括号包裹表名与架构名

SQL Server对标识符的解析可能出现异常,用方括号包裹可避免这类问题,修改查询语句为:

SELECT TOP 10 * FROM [dbo].[icZGBookings]

若需指定数据库,同样加上方括号:

SELECT TOP 10 * FROM [A].[dbo].[icZGBookings]

2. 验证连接的当前数据库

虽然代码指定了database='A',但可先确认连接实际指向的数据库:

cursor.execute("SELECT DB_NAME()")
print(cursor.fetchone())

如果返回结果不是A,可在查询前手动切换数据库:

cursor.execute("USE A;")
cursor.execute("SELECT TOP 10 * FROM dbo.icZGBookings")

3. 排查表名的隐藏字符或大小写问题

部分表名可能包含不可见空格、特殊字符,或创建时使用了区分大小写的定义。在SSMS中执行以下语句查看表名的原始格式:

SELECT name, QUOTENAME(name) FROM sys.tables WHERE name LIKE '%icZGBookings%'

将返回的带引号表名直接复制到Python查询语句中使用。

4. 更换为pyodbc驱动

pymssql基于DB-Lib,对部分SQL Server场景兼容性不如pyodbc,可尝试改用pyodbc连接:

import pyodbc

conn = pyodbc.connect(
    'DRIVER={ODBC Driver 17 for SQL Server};'
    'SERVER=localhost,8888;'
    'DATABASE=A;'
    'UID=sa;'
    'PWD=1234'
)
cursor = conn.cursor()
cursor.execute("SELECT TOP 10 * FROM dbo.icZGBookings")
results = cursor.fetchall()
for row in results:
    print(row)
cursor.close()
conn.close()

5. 升级pymssql版本

当前使用的pymssql 2.2.7可能存在已知兼容性问题,尝试升级到最新稳定版:

pip install --upgrade pymssql

内容的提问来源于stack exchange,提问作者dimi727

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:35:35