PostgreSQL查询给出了意外结果

时间:2019-11-07 13:55:55

标签: python postgresql information-schema

我正在尝试做一些非常简单的可行的事情,但不是我期望的那样。我有一个包含各种表的数据库,对于每个表,我都试图从信息模式中提取列名。我正在使用下面的代码,所有内容都像一个超级按钮(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子句的参数的表名,而不是列名。怎么可能呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

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