【问题标题】:Postgresql how to convert insert value as parametersPostgresql如何将插入值转换为参数
【发布时间】:2021-11-13 07:17:12
【问题描述】:

我有一个插入 sql:

cur.execute(f"""INSERT INTO patients_patient (patient_id, patient_name) VALUES
                      (1,'Jane'),(2,'John')""")

我厌倦了在查询中使用参数并分别传递值:

cur.execute(f"""INSERT INTO patients_patient (patient_id, patient_name) VALUES
                      (%s,%s),(%s,%s)""",(1,'Jane'),(2,'John'))

错误:

cur.execute(f"""INSERT INTO patients_patient (patient_id, patient_name) VALUES
TypeError: function takes at most 2 arguments (3 given)

有朋友可以帮忙吗?

【问题讨论】:

    标签: sql postgresql sql-insert


    【解决方案1】:

    在这里尝试使用executemany()

    sql = 'INSERT INTO patients_patient (patient_id, patient_name) VALUES (?, ?)'
    values = [(1, 'Jane'), (2, 'John')]
    cur.executemany(sql, values)
    

    如果您事先不知道VALUES 子句中有多少元组,那么您可以动态构建它:

    sql = 'INSERT INTO patients_patient (patient_id, patient_name) VALUES '
    values = [(1, 'Jane'), (2, 'John')]
    sql += '(%s' + ',%s'*(len(values)-1) + ')'
    cur.executemany(sql, values)
    

    【讨论】:

    • 嗨蒂姆,谢谢,我还有一个:cur.execute(f"""INSERT INTO patients_event_type (type_name) VALUES ('HR'),('RR')""") 它不是工作,你能帮帮我吗?
    • 那么对于初学者来说,为什么你使用execute() 而不是executeMany()
    • 我在这里发布的sql可以,但是我复制了你的最后一个代码,它不适用于这个。我想更改这个是因为我想使用参数。
    • 您好朋友也帮忙解决一下这个相关的问题吗? stackoverflow.com/questions/69952301/…
    猜你喜欢
    • 2021-02-12
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2019-12-02
    • 1970-01-01
    相关资源
    最近更新 更多