PostgreSQL查询给出了意外结果

问题描述 投票:0回答:1

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

谢谢!

python postgresql information-schema
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.