如何解决如何在Python cur.execute中的SQL查询中参数化表名?
jobs.gen_pk
jobs.gen_ind
jobs.gen_af
cur.execute(f"SELECT max(batch_id) FROM jobs.gen_pk")
我需要参数化pk
部分,
就像从其他表中读取一样
使用configParser
cur.execute(f"SELECT max(batch_id) FROM jobs.gen_(parametrize this)")
import configparser
import psycopg2
parser = configparser.ConfigParser()
base_path = os.path.dirname(os.path.realpath(__file__))
parser.read(os.path.join(base_path,'FileConfig.cfg'))
dbname = parser.get('file_config','dbname')
host = parser.get('file_config','host')
port = parser.get('file_config','port')
user = parser.get('file_config','user')
location = parser.get('file_config','location') #pk,ind,af
cur.execute(f"SELECT max(batch_id) FROM jobs.gen_(location)")
解决方法
您似乎只是想要:
cur.execute("SELECT max(batch_id) FROM jobs.gen_" + location)
请注意,此类构造为SQL注入打开了代码。如果为location
提供了恶意字符串,则可能会发生不良情况。如果该值来自代码之外,那么您应该在运行查询之前正确验证它(例如,通过对照固定的允许值列表进行检查)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。