psycopg2 executemany和execute_batch
时间: 2023-09-28 11:03:48 浏览: 247
psycopg2-2.8.2.tar_psycopg2_python_
psycopg2 的 `executemany()` 和 `execute_batch()` 都可以用来执行多个 SQL 语句。
`executemany()` 方法用于多次执行相同的 SQL 语句,每次执行时传入不同的参数。例如:
```python
import psycopg2
conn = psycopg2.connect(database="mydatabase", user="myusername", password="mypassword", host="localhost", port="5432")
cur = conn.cursor()
# 执行多次相同的 SQL 语句
cur.executemany("INSERT INTO mytable (name, value) VALUES (%s, %s)", [('foo', 1), ('bar', 2), ('baz', 3)])
conn.commit()
conn.close()
```
`execute_batch()` 方法用于一次性执行多条相似但不完全相同的 SQL 语句,每条 SQL 语句的参数可以不同。例如:
```python
import psycopg2
conn = psycopg2.connect(database="mydatabase", user="myusername", password="mypassword", host="localhost", port="5432")
cur = conn.cursor()
# 执行多条相似但不完全相同的 SQL 语句
cur.execute_batch("""
INSERT INTO mytable (name, value) VALUES (%s, %s);
INSERT INTO mytable (name, value) VALUES (%s, %s);
INSERT INTO mytable (name, value) VALUES (%s, %s);
""", [('foo', 1), ('bar', 2), ('baz', 3)])
conn.commit()
conn.close()
```
需要注意的是,`execute_batch()` 方法会将所有 SQL 语句一次性发送给数据库执行,因此在执行大量 SQL 语句时可能会导致性能问题。另外,`execute_batch()` 方法只支持 PostgreSQL 9.1 及以上版本。
阅读全文