为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

FFIVE 2021-12-26 14:16:44
我正在使用 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”
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

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"


查看完整回答
反对 回复 2021-12-26
  • 1 回答
  • 0 关注
  • 274 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号