首页 > 解决方案 > SQL Server 和 PYODBC 的问题

问题描述

我在此声明中遇到错误:

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

错误:

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]关键字'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")

标签: sqlsql-serverpyodbc

解决方案


User保留字,需要转义,通常使用方括号,例如

SELECT * FROM dbo.[User]

但双引号也可以:

SELECT * FROM dbo."User"

尽管如果您避免使用保留字,它将使您(以及任何跟随的开发人员)的生活变得更加轻松。


推荐阅读