目录
[1. 基础语法](#1. 基础语法)
[2. 基础用法](#2. 基础用法)
[3. 多条SQL](#3. 多条SQL)
[4. 事务SQL](#4. 事务SQL)
1. 基础语法
语法
python
psycopg2.connect(
dsn #指定连接参数。可以使用参数形式或 DSN 形式指定。
host #指定连接数据库的主机名。
dbname #指定数据库名。
user #指定连接数据库使用的用户名。
password #指定连接数据库使用的密码。
port #指定连接数据库的端口号。
connection_factory #指定创建连接对象的工厂类。
cursor_factory #指定创建游标对象的工厂类。
async_ #指定是否异步连接(默认False)。
sslmode #指定 SSL 模式。
sslrootcert #指定证书文件名。
sslkey #指定私钥文件名。
sslcert #指定公钥文件名。
)
2. 基础用法
python
import psycopg2
# 连接数据库
conn_pg = psycopg2.connect("host=localhost dbname=test user=postgres password=123456 port=5432")
# 创建一个游标
cur = conn_pg.cursor()
# 执行SQL语句
cur.execute("select * from t1 limit 10;")
# 获取返回的结果
rows = cur.fetchall()
# 遍历每行结果(也可以直接打印,输出格式为列表)
for i in rows:
print(i)
# 关闭游标
cur.close()
# 关闭连接
conn_pg.close()
结果如下
3. 多条SQL
多条SQL语句直接放入 execute 方法中即可
python
import psycopg2
# 编写要执行的SQL语句
sql_statements = """
SELECT * FROM t1 WHERE c1 = 1;
UPDATE t1 SET c2 = 'yt' WHERE c1 = 1;
SELECT * FROM t1 WHERE c1 = 1;
"""
# 连接数据库
with psycopg2.connect("host=localhost dbname=test user=postgres password=123456 port=5432") as conn_pg:
with conn_pg.cursor() as cur:
# 执行SQL语句
cur.execute(sql_statements)
# 获取返回的结果
rows = cur.fetchall()
# 输出结果
print(rows)
# 提交事务
conn_pg.commit()
- 这种方法只返回最后一条SQL语句的结果,如果需要全部返回,使用遍历的方法逐条发送即可
4. 事务SQL
python
#!/usr/bin/python
import psycopg2
# 连接数据库
with psycopg2.connect("host=localhost dbname=test user=postgres password=123456 port=5432") as conn_pg:
with conn_pg.cursor() as cur:
try:
cur.execute("BEGIN") #开始事务
cur.execute("INSERT INTO t1 VALUES (1, 'abc');")
cur.execute("UPDATE t1 SET c2 = 'def' WHERE c1 = 1;")
conn_pg.commit() #提交事务
except:
conn.rollback() #回滚事务