猿问

如何使用 psycopg2.sql 将列列表或 *(所有列)传递给动态 SQL 查询

我正在使用 psycopg2.sql 动态生成查询字符串。


我希望能够将列列表或 *(对于所有列)动态传递给同一个 SELECT 查询字符串。


这适用于列列表:


qry = sql.SQL('SELECT {} FROM {}.{}').format(

    sql.SQL(",").join(map(sql.Identifier, ["col1","col2"])),

    sql.Identifier('schema'),

    sql.Identifier('table'))

但这在尝试选择所有列时不起作用:


qry = sql.SQL('SELECT {} FROM {}.{}').format(

    sql.Identifier('*')),

    sql.Identifier('schema'),

    sql.Identifier('table'))

我收到的错误是“DatabaseError: Execution failed on sql … column "*" does not exist”


FFIVE
浏览 275回答 1
1回答

牛魔王的故事

sql.Identifier('*')生成"*":SELECT "*" FROM "schema"."table"使用基本的SQL Composable:qry = sql.SQL('SELECT {} FROM {}.{}').format(    sql.SQL('*'),    sql.Identifier('schema'),    sql.Identifier('table'))要得到SELECT * FROM "schema"."table"
随时随地看视频慕课网APP

相关分类

Python
我要回答