You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Psycopg2实现批量插入不存在于表中的数据?

使用Psycopg2批量插入不存在的数据

要安全高效地将元组列表转换为SQL VALUES子句并执行条件插入,推荐使用Psycopg2的execute_values方法(来自psycopg2.extras模块),它能自动处理元组的格式化,同时避免SQL注入风险。

步骤示例:

  1. 导入必要模块
from psycopg2 import connect
from psycopg2.extras import execute_values
  1. 准备待插入的元组数据
data_to_insert = [('hello', 123), ('hey', 123)]
  1. 编写带参数的SQL查询
    将VALUES部分用%s作为占位符,execute_values会自动替换为正确格式化的元组列表:
INSERT INTO keywords(name, proj_id)
SELECT d.name, d.proj_id
FROM (VALUES %s) AS d(name, proj_id)
WHERE NOT EXISTS (
    SELECT 1 FROM keywords u2
    WHERE u2.name = d.name AND u2.proj_id = d.proj_id
)
  1. 执行插入操作
# 建立数据库连接
conn = connect("dbname=你的数据库名 user=用户名 password=密码")
cur = conn.cursor()

# 执行批量插入
execute_values(cur, query, data_to_insert)

# 提交事务并关闭连接
conn.commit()
cur.close()
conn.close()

关键说明:

  • execute_values会自动将元组列表转换为('hello',123),('hey',123)的格式,无需手动拼接字符串。
  • 该方法支持大量数据的批量插入,比单条插入效率更高。
  • 自动处理字符串转义,彻底避免SQL注入问题。

内容的提问来源于stack exchange,提问作者Bibin Hashley O P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:10:31