【发布时间】:2020-09-17 10:02:59
【问题描述】:
我已通过 Jupyter 连接到 postgres 表,并尝试使用通过 psycopg2 的连接对其进行过滤。
pd.read_sql_query('''SELECT *
FROM public."TABLE_NAME"
LIMIT 5''', cnx)
返回表格的前 5 行,但是,我想根据条件进行过滤。
条件只是一个整数
pd.read_sql_query('''SELECT *
FROM public."TABLE_NAME"
WHERE TABLE_NAME.COLUMN = 851
LIMIT 5''', cnx)
抛出错误“未定义的列”并暗示我的意思是 TABLE_NAME.COLUMN,这正是我尝试过的。
任何有关如何解决此问题的见解将不胜感激。
【问题讨论】:
-
错误似乎很清楚,您的表中不存在该列?您还为您的呼叫添加了架构
public的前缀,但没有在 where 子句中添加前缀,如果您尝试先使用别名FROM public.[Table Name] t; WHERE t.Column = ...可能会更好 -
该列确实存在,即使我转到初始查询并添加 .columns 它也会出现
-
这不是列或 SQL 的问题,而是在 python 中替换
condition的问题。 -
条件只是一个整数
-
我看到更新的问题。你真的有一个名为
column的列吗?您是否尝试过给表格起别名?pd.read_sql_query('''SELECT * FROM public."TABLE_NAME" t WHERE t.COLUMN = 851 LIMIT 5''', cnx)
标签: python sql pandas postgresql pgadmin