SQL 服务器和 PYODBC 的问题

Issues with SQL Server and PYODBC

我在这条语句中遇到错误:

cursor.execute("SELECT * FROM dbo.User")

错误:

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near the keyword 'User'. (156) (SQLExecDirectW)")

代码如下。我假设连接很好,因为除非我执行查询,否则什么也不会发生?我做错了什么吗?

SERVER = 'LAPTOP-1E7UL24T\SQLEXPRESS02'
DATABASE = 'PT'
DRIVER='{ODBC Driver 17 for SQL Server}'
DATABASE_CONNECTION=f'Driver={DRIVER};SERVER={SERVER};Database={DATABASE};Trusted_Connection=yes;'
print(DATABASE_CONNECTION)
cnxn=pyodbc.connect(DATABASE_CONNECTION)

cursor=cnxn.cursor()
cursor.execute("SELECT * FROM dbo.User")

Userreserved word 并且需要转义,通常使用方括号,例如

SELECT * FROM dbo.[User]

但是双引号也可以:

SELECT * FROM dbo."User"

虽然如果您只是避免使用保留字,它会让您的生活(以及任何跟随的开发人员)变得更轻松。

您很可能 运行 已弃用数据类型:IMAGETEXTNVARCHAR。他们需要以不同的方式处理。

查看他们的 github issue, and this SO 答案。