目录
1. 基础语法
2. 基础用法
3. 多条SQL
4. 事务SQL
1. 基础语法
语法
psycopg2.connect(dsn #指定连接参数。可以使用参数形式或 DSN 形式指定。host #指定连接数据库的主机名。dbname #指定数据库名。user #指定连接数据库使用的用户名。password #指定连接数据库使用的密码。port #指定连接数据库的端口号。connection_factory #指定创建连接对象的工厂类。cursor_factory #指定创建游标对象的工厂类。async_ #指定是否异步连接(默认False)。sslmode #指定 SSL 模式。sslrootcert #指定证书文件名。sslkey #指定私钥文件名。sslcert #指定公钥文件名。
)
2. 基础用法
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 方法中即可
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
#!/usr/bin/pythonimport 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() #回滚事务