python - 在 pandas sql 查询中传递参数时出现语法错误
问题描述
我在 postgres 数据库的 pandas sql 查询中使用 f 表示法。以下工作正常:
areas = pd.read_sql_query(f"SELECT * FROM Areas WHERE dwelling_id={dwelling_id}", con=db.engine)
但是当我用不同的表重复同样的事情时:
windows = pd.read_sql_query(f"SELECT * FROM Window WHERE area_id={area_id}", con=db.engine)
我收到以下错误:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) syntax error at or near "Window"
LINE 1: SELECT * FROM Window WHERE area_id=1
^
[SQL: SELECT * FROM Window WHERE area_id=1]
请注意,我放弃了通常的 params=(variable, ) 方法,因为我无法让它工作。奇怪的是 f 表示法适用于第一个查询,但不适用于第二个查询。
有趣的是,当我在 Heroku 应用程序中查询 windows 表以集成数据库时,我得到了同样的错误,而其他表没有显示同样的错误:
谁能帮忙!
解决方案
我认为问题在于 the是函数中WINDOW
的保留关键字。Postgress
window
WINDOW
检查表创建是否通过或它本身是否失败是值得的。
如果保留关键字允许创建表但仅查询表会给出错误,那会很奇怪。
推荐阅读
- excel - 提取多个表达式
- python - Flask SERVER_NAME 设置最佳实践
- postgresql - Artemis ActiveMQ 无法连接到 Postgres
- python - 使用 tweepy 从 Twitter 获取用户 ID 时出错?
- java - NoClassDefFoundError javax/servlet/Registration$Dynamic with spring boot + spring boot legacy
- python - “msvcrt.getch”之后的“打印”不起作用
- jdbc - 在进一步处理之前等待 jdbc 出站通道适配器完成
- javascript - 对选项卡式内容的 opacity 属性使用 CSS3 过渡不起作用
- javascript - 如何在我的 Vue 组件中加载 OpenSeadragon 组件
- r - 从 R 中的唯一大列表对象创建新文本文件