psycopg2 使用ThreadedConnectionPool 工具封装

psycopg2 介绍

        psycopg2库介绍: Psycopg2是一个用于Python编程语言的第三方库,用于访问PostgreSQL数据库系统。它提供了一组工具和方法,可以轻松地在Python程序中进行数据库操作,包括查询、插入、更新、删除等操作。

以下是Psycopg2库的一些主要特点:

  1. 简单易用: Psycopg2提供了简单的API,易于学习和使用。
  2. 高性能: Psycopg2是基于C语言实现的,能够提供高效的数据库操作。
  3. 完全兼容: Psycopg2与PostgreSQL数据库完全兼容,并支持大多数PostgreSQL特性。
  4. 安全性: Psycopg2具有内置的防止SQL注入攻击的功能,能够保证数据安全。
  5. 使用Psycopg2库进行数据库操作通常需要以下步骤:
  6. 安装psycopg2库:可以使用pip install psycopg2来安装该库。
  7. 建立数据库连接:使用psycopg2库提供的connect()方法建立与数据库的连接。
  8. 执行SQL语句:使用psycopg2提供的方法执行SQL语句,如查询、插入、更新等操作。
  9. 处理查询结果:如果执行的是查询操作,需要使用fetchone()或fetchall()方法来处理查询结果。
  10. 关闭连接:最后需要使用close()方法关闭数据库连接。

以下为封装后的utils工具,可直接在项目中使用:

1.数据库配置类 config.py

# prod 环境配置
# POSTGRE_HOST = "samrt.prod.xxx.cloud"
# POSTGRE_PORT = 1921
# POSTGRE_USER = "check_prod"
# POSTGRE_DATABASE = "check_prod"
# POSTGRE_PASSWORD = "VLjxs0K8888BMWh"# dev环境配置
POSTGRE_HOST = "smart.dev.xxx.cloud"
POSTGRE_PORT = 1921
POSTGRE_USER = "check_dev"
POSTGRE_DATABASE = "check_dev"
POSTGRE_PASSWORD = "Ku3py19822gBaXsNW"

2.封装的通用数据库操作类 PostgreSqlPool.py

from psycopg2 import pool
from config import *class PostgreSqlTool(object):def __init__(self):try:self.connectPool = pool.ThreadedConnectionPool(2, 10, host=POSTGRE_HOST, port=POSTGRE_PORT,user=POSTGRE_USER, password=POSTGRE_PASSWORD,database=POSTGRE_DATABASE, keepalives=1,keepalives_idle=30, keepalives_interval=10,keepalives_count=5)except Exception as e:print(e)def getConnect(self):conn = self.connectPool.getconn()cursor = conn.cursor()return conn, cursordef closeConnect(self, conn, cursor):cursor.close()self.connectPool.putconn(conn)def closeAll(self):self.connectPool.closeall()# 执行增删改def execute(self, sql, value=None):conn, cursor = self.getConnect()try:res = cursor.execute(sql, value)conn.commit(conn, cursor)self.closeConnect(conn, cursor)return resexcept Exception as e:conn.rollock()raise edef selectOne(self, sql):conn, cursor = self.getConnect()cursor.execute(sql)result = cursor.fetchone()self.closeConnect(conn, cursor)return resultdef selectAll(self, sql):conn, cursor = self.getConnect()cursor.execute(sql)result = cursor.fetchall()self.closeConnect(conn, cursor)return result

3. 实际使用操作sql类

读取本地task.txt 中的任务号,查询数据库,将查询结果写到最大批次查询结果.csv文件中

# coding=utf-8
import PostgreSqlPoolif __name__ == "__main__":pgsql = PostgreSqlPool.PostgreSqlTool()# 打开一个文件with open('task.txt') as fr:# 读取文件所有行lines = fr.readlines()lines = [i.rstrip() for i in lines]list = []list.append("taskId,batchId\n")for taskId in lines:sql = "select task_id, batch_id  from ics_batch_info where batch_id=(select MAX(batch_id) from ics_batch_info WHERE task_id = '{taskId}')".format(taskId=taskId)print("执行sql: ", sql)result = pgsql.selectOne(sql)if result is not None:list.append(result[0] + "," + str(result[1]) + "\n")print(result)list[len(list) - 1] = list[len(list) - 1].rstrip();with open("最大批次查询结果.csv", 'w') as fw:fw.writelines(list)print("☺☺☺执行完毕☺☺☺")

读取文件和导出csv文件均在本目录下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/102392.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图像分类】基于LIME的CNN 图像分类研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Element Plus <el-table> 组件之展开行Table在项目中使用

目录 官方样式: 展开前: 展开: 原始代码: 代码详解: 项目使用场景: 完成效果: 具体实现范本: 1.调整数据结构 2. 修改标签和数据绑定 3. JavaScript 部分导入和创建对象 …

Spring事务和事务传播机制(2)

前言🍭 ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 在Spring框架中,事务管理是一种用于维护数据库操作的一致性和…

keepalived+lvs+nginx高并发集群

keepalivedlvsnginx高并发集群 简介: keepalivedlvsnginx高并发集群,是通过LVS将请求流量均匀分发给nginx集群,而当单机nginx出现状态异常或宕机时,keepalived会主动切换并将不健康nginx下线,维持集群稳定高可用 1.L…

0008Java程序设计-JSP学生成绩管理系统设计与实现

摘 要目录系统实现开发环境 摘 要 随着网络的不断发展,一个好的成绩查询系统,不仅便于学生查询成绩、查询个人信息,而且有利于管理员对学生成绩的统一管理,考试之后学生能及时的对个人信息进行查看,减少了老师和学生之…

React(8)

千锋学习视频https://www.bilibili.com/video/BV1dP4y1c7qd?p72&spm_id_frompageDriver&vd_sourcef07a5c4baae42e64ab4bebdd9f3cd1b3 1.React 路由 1.1 什么是路由? 路由是根据不同的 url 地址展示不同的内容或页面。 一个针对React而设计的路由解决方案…

优化广告运营,代理IP的作用不容忽视

在当今激烈的市场竞争中,广告投放早已成为企业营销的重要手段。广告投放不仅可以提高品牌知名度、产品可信度,还能够树立品牌形象,增强市场竞争力。然而,影响广告投放效果的因素很多,投放时间段、投放地区、在哪个平台…

iTwinCapture中文版原ContextCapture安装包以及安装教程

iTwinCapture软件安装教程 一、获取软件 中文安装包评论区或后台回复iTwinCapture 在App Store或Google Play搜索软件名称"iTwin Capture",下载安装软件。 您也可以在Bentley官网下载对应的iTwin Capture版本。 二、软件安装 点击下载后的安装包,根据提示完成安装…

环二肽16364-35-5,cyclo(Glu-Gly),环(甘氨酰-谷氨酸),产品特点介绍

中文名:环(甘氨酰-谷氨酸) 英文名:cyclo(Glu-Gly) CYCLO(-GLY-GLU) CAS:16364-35-5 分子式:C7H10N2O4 分子量:186.165 沸点: 666.840.0 C(Predicted) 表面张力(dy…

【IMX6ULL驱动开发学习】08.马达驱动实战:驱动编写、手动注册平台设备和设备树添加节点信息

目录 一、使用设备树 1.1 修改设备树流程 二、手动创建平台设备 三、总结(附驱动程序) 前情提要:​​​​​​​【IMX6ULL驱动开发学习】07.驱动程序分离的思想之平台总线设备驱动模型和设备树_阿龙还在写代码的博客-CSDN博客 手动注册…

前端界面设计

目录 1.兴趣展示网站1.效果2.核心代码展示3.源代码 2.优美的登录网页1.效果2.核心代码展示3.源代码 3.美女相册1.效果2.核心代码展示3.源代码 4.精美选项卡1.效果2.核心代码展示3.源代码 4. 自己写过的一些前端界面设计Demo整理。 1.兴趣展示网站 1.效果 2.核心代码展示 工程截…

【中危】 Apache NiFi 连接 URL 验证绕过漏洞 (CVE-2023-40037)

漏洞描述 Apache NiFi 是一个开源的数据流处理和自动化工具。 在受影响版本中,由于多个Processors和Controller Services在配置JDBC和JNDI JMS连接时对URL参数过滤不完全。使用startsWith方法过滤用户输入URL,导致过滤可以被绕过。攻击者可以通过构造特…

C++头文件和std命名空间

C 是在C语言的基础上开发的,早期的 C 还不完善,不支持命名空间,没有自己的编译器,而是将 C 代码翻译成C代码,再通过C编译器完成编译。 这个时候的 C 仍然在使用C语言的库,stdio.h、stdlib.h、string.h 等头…

探索Vue生命周期钩子函数:从创生到销毁

Vue这个引领前端开发潮流的框架,其优雅的响应式数据绑定和组件式开发方式,使得它备受瞩目。然而,Vue的魅力绝不仅限于此,它还赋予开发者一组神奇的生命周期钩子函数,能够在组件的各个成长阶段插入自定义代码。本文将带…

IPv6 基础概念

IPv6 基础概念 组播地址 IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。例如组播地址FF02::1表示链路本地范围的所有节点,组播地址…

二、Kafka快速入门

目录 2.1 安装部署1、【单机部署】2、【集群部署】 2.2 Kafka命令行操作1、查看topic相关命令参数2、查看当前kafka服务器中的所有Topic3、创建 first topic4、查看 first 主题的详情5、修改分区数(注意:分区数只能增加,不能减少)…

Red Hat Enterprise Linux (RHEL) 6.4 安装、redhat6.4安装

1、下载地址 Red Hat Enterprise Linux (RHEL) 6.4 DVD ISO 迅雷下载地址http://rhel.ieesee.net/uingei/rhel-server-6.4-x86_64-dvd.iso 2、创建虚拟机 3、redhat安装 选择第一个安装 Skip跳过检查 语言选择简体中文 键盘选择默认 选择基本存储设备 忽略所有数据 设置root密…

Verilog 入门

Verilog 入门 本内容来自 牛客网Verilog入门特别版 1、一个没有输入和一个输出常数1的输出的电路,输出信号为one module top_module(one);output wire one;assign one 1b1; endmodule2、创建一个具有一个输入和一个输出的模块,其行为类似于电路上的连…

Office ---- excel ---- 怎么批量设置行高

解决方法: 调整行高即可

在 IDEA 中使用 Git开发 图文教程

在 IDEA 中使用 Git开发 图文教程 一、连接远程仓库二、IDEA利用Git进行开发操作三、分支操作3.1 新建分支3.2 切换分支3.3 删除分支3.4 比较分支3.5 合并分支 四、常用快捷键 一、连接远程仓库 一、打开IDEA,进入目录:File ->New ->Project from…