首页 > 解决方案 > 在 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 表以集成数据库时,我得到了同样的错误,而其他表没有显示同样的错误:

在此处输入图像描述

谁能帮忙!

标签: pythonpandassqlalchemy

解决方案


我认为问题在于 the是函数中WINDOW的保留关键字Postgresswindow

WINDOW检查表创建是否通过或它本身是否失败是值得的。

如果保留关键字允许创建表但仅查询表会给出错误,那会很奇怪。


推荐阅读