当前位置: 首页 > news >正文

Python模块psycopg2连接postgresql

目录

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()      #回滚事务

                              

http://www.lryc.cn/news/102148.html

相关文章:

  • Kotlin基础(八):泛型
  • Java学习笔记——(10)环境变量path配置及其作用
  • 【图像去噪】基于进化算法——自组织迁移算法(SOMA)的图像去噪研究(Matlab代码实现)
  • TMS WEB Core Crack,TMS软件Delphi组件RADical Web
  • PHP使用Redis实战实录4:单例模式和面向过程操作redis的语法
  • 解决:移动端H5的<video>初始化拿不到总时长
  • 百度云上传身份证获取身份信息封装
  • vscode 上cmake 版本过低
  • OS-08-事件驱动:C10M是如何实现的?
  • mysql 主从同步排查和处理 Slave_IO、Slave_SQL
  • 基于解析法和遗传算法相结合的配电网多台分布式电源降损配置(Matlab实现)
  • 07mysql查询语句之子查询
  • 笙默考试管理系统-MyExamTest(22)
  • Windows 不同方式打开的cmd/dos窗口属性配置不同
  • 性能优化-webpack配置gzip
  • RabbitMQ 教程 | 第3章 客户端开发向导
  • 基于深度学习的CCPD车牌检测系统(PyTorch+Pyside6+YOLOv5模型)
  • input元素中的form属性有什么用?
  • 【数据结构篇C++实现】- 特殊的线性表 - 串
  • DevOps系列文章 之 Springboot单元测试
  • 04 linux之C 语言高级编程
  • 深入学习 Redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 类型扩展
  • Windows11+Opencv+Clion编译源码
  • 【机器学习】Cost Function
  • 【黑马头条之内容安全第三方接口】
  • 回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)
  • STM32 HAL库函数——HAL_UART_RxCpltCallback()详解
  • 前端调用合约如何避免出现transaction fail
  • 选择器的使用
  • 软考A计划-系统集成项目管理工程师-项目干系人管理-上