Python 基于条件的posgres表过滤
我已经通过Jupyter连接到一个postgres表,并试图通过psycopg2连接对其进行过滤Python 基于条件的posgres表过滤,python,sql,pandas,postgresql,pgadmin,Python,Sql,Pandas,Postgresql,Pgadmin,我已经通过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
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)
抛出一个错误“undefined column”,并表明我指的是TABLE_NAME.column,这正是我所尝试的
如果您能了解如何解决此问题,我们将不胜感激。请尝试以下方法:
pd.read_sql_query(f'''SELECT *
FROM public.TABLE_NAME
WHERE public.TABLE_NAME.COLUMN = {condition}
LIMIT 5''', cnx)
您需要这样写-(这里cnx将是column的值。)
错误似乎很明显,您的表中不存在该列?另外,您已经在调用前添加了schema
public
,但没有添加where子句,如果您首先尝试从public中别名。[Table Name]t;其中,t.Column=…
列确实存在,即使在我进行初始查询并添加.columns时,它也会出现。这不是列的问题,也不是SQL的问题。在python中,替换条件
是一个问题。条件只是一个整数。请参见更新后的问题。您真的有一个名为column
的列吗?你有没有试过给表格加上别名pd.read\u sql\u查询(''SELECT*FROM public.'TABLE\u NAME“t WHERE t.COLUMN=851 LIMIT 5',cnx)
这产生了一个不同的错误,TABLE的子句条目中缺少了我编辑过的更新答案,使用字符串格式与public.TABLE\u NAME.COLUMN={condition}
,@CarterB这可能有效谢谢您的帮助。还是一样的错误。作为参考,条件只是一个整数。您能解释一下这与我尝试过的有什么不同吗?我希望您能看到=%s
。基本上,此%s将由您在cnx中传递的值替换,但cnx是我的连接。用条件(整数)替换它会抛出“int”对象没有属性“cursor”,我看到更新的问题了。您真的有一个名为column的列吗?你有没有试过给表格加上别名?pd.read_sql_查询('''SELECT*FROM public.''TABLE_NAME“t其中t.COLUMN=851 LIMIT 5'',cnx)
pd.read_sql_query('''SELECT *
FROM public."TABLE_NAME"
WHERE TABLE_NAME.COLUMN = %s
LIMIT 5''', cnx)