sql - 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")
解决方案
User
是保留字,需要转义,通常使用方括号,例如
SELECT * FROM dbo.[User]
但双引号也可以:
SELECT * FROM dbo."User"
尽管如果您避免使用保留字,它将使您(以及任何跟随的开发人员)的生活变得更加轻松。
推荐阅读
- javascript - VueJS,ReferenceError:谷歌未定义
- javascript - 将二维数组转换为对象数组
- python - wxPython 在运行时创建一个带有子列表的巨大可点击列表?
- javascript - 失败的道具类型:道具`children`在`InputAdornment`中标记为必填,但其值为`undefined`
- batch-file - 无法使用批处理脚本读取由 `wmic logicaldisk get name > D:\sample.txt` 生成的文本文件内容
- vsftpd - vsftpd:多个 FTP 用户和一个主用户
- ruby-on-rails - Rails - 获取所有记录有许多通过关系,包括未关联的记录
- javascript - 在 JS 的条件语句中使用 META CHARACTERS 不起作用
- php - laravel 5.5 中的内存不足问题
- python - 如何从 django 请求中获取 urlpattern