您可以使用sql.Placeholder,用所需的%s
-placeholders数量填充sql语句:
def load_table(dbname,table_name,fields,records):
con, cur = create_connection('foo')
query = sql.sql("insert into {} ({}) values ({})").format(
sql.Identifier(table_name),
sql.sql(', ').join(map(sql.Identifier, fields)),
sql.sql(', ').join(sql.Placeholder() * len(fields)))
print(query.as_string(con))
if __name__ == '__main__':
dbname = '...'
table_name = 'messages'
fields = ['user_id', 'message_type', 'message_title']
records = [['12345', 'json', 'my first message'], ]
load_table(dbname,table_name,fields,records)
输出:
insert into "messages" ("user_id", "message_type", "message_title") values (%s, %s, %s)