繁体   English   中英

PostgreSQL 查询给出了意外的结果

[英]PostgreSQL query gives unexpected result

我正在尝试做一些非常简单的工作,但不是我期望的那样。 我有一个包含各种表的数据库,对于这些表中的每一个,我都试图从信息模式中提取列名。 我正在使用下面的代码,一切都像一个魅力(python):

import psycopg2 as pgsql

# code to connect and generate cursor

table = 'some_table_name'

query = 'SELECT column_name FROM information_schema.columns WHERE table_name = %s'

cursor.execute(query, (table,))
result = pd.DataFrame(cursor.fetchall())
print(result)

到目前为止,一切都很好。 当我用以下内容替换查询变量时出现问题:

import psycopg2 as pgsql

# code to connect and generate cursor

table = 'some_table_name'

**query = 'SELECT column_name FROM information_schema.columns WHERE table_name='+table

cursor.execute(query)**
result = pd.DataFrame(cursor.fetchall())
print(result)

如果我打印声明,它是正确的:

SELECT column_name FROM information_schema.columns WHERE table_name=some_table_name

但是,当我运行查询时,我收到以下错误消息:

UndefinedColumn: column "some_table_name" does not exist
LINE 1: ... FROM information_schema.columns WHERE table_name=some_tabl...

some_table_name 是作为 WHERE 子句参数的表名,而不是列名。 这怎么可能?

谢谢!

您的问题是您没有将 some_table_name 放在引号中,因此它被视为列名,而不是字符串文字。 为什么不坚持第一种既有效又符合 psycopg 文档的方法呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM