Python操作PostGre的简单封装

文章目录

  • 一、安装依赖
  • 二、配置文件
  • 三、实现类


一、安装依赖

pip install psycopg2 numpy 

二、配置文件

utils.config.py

import os############### 233 PostGre Configuration ###############
POSTGRE_HOST = "192.168.0.233"
POSTGRE_PORT = 5432
POSTGRE_USER = "usss"
POSTGRE_PWD = "pwww"
POSTGRE_DB = "dbbb"

三、实现类

utils.PostGreOp.py

# encoding: utf-8# sql导出
# mysqldump -u root -p db_name > test_db.sqlimport psycopg2
import config.config as cf
import json
import numpy as npclass PostGreOp(object):def __init__(self, host=cf.POSTGRE_HOST, port=cf.POSTGRE_PORT, username=cf.POSTGRE_USER, password=cf.POSTGRE_PWD, db=cf.POSTGRE_DB):self.host = hostself.port = portself.username = usernameself.password = passwordself.db = db# 增删改def operate(self, sql):db = psycopg2.connect(host=self.host, port=self.port, user=self.username, password=self.password, database=self.db)cur = db.cursor()try:# 执行sql语句cur.execute(sql)op_id = cur.lastrowidcur.close()# 提交到数据库执行db.commit()except Exception as e:print(e)op_id = Nonecur.close()# Rollback in case there is any errordb.rollback()# 关闭数据库连接db.close()return op_id# 查def select(self, sql):db = psycopg2.connect(host=self.host, port=self.port, user=self.username, password=self.password, database=self.db)cur = db.cursor()results = Nonetry:# 执行sql语句cur.execute(sql)# 获取所有记录列表results = cur.fetchall()# print(results)except Exception as e:print(e)# 关闭数据库连接db.close()return results@classmethoddef escape_str(cls, text):'''string类型数据导入时有可能出现单双引号等需要转义的字段,也可能出现nan这样的字段,需要先处理一下:return:'''if cls.isNaNo(text):return 'null'else:return "'" + json.dumps(str(text), ensure_ascii=False)[1:-1] + "'"@classmethoddef escape_num(cls, text):'''转一下整数,报错的话说明传入的不是数字,有sql注入风险:return:'''if str(text) == '0':return '0'elif cls.isNaNo(text):return 'null'else:# return json.dumps(str(text), ensure_ascii=False)try:int(text)return str(text)except Exception as e:raise Exception('传入不是数字,有sql注入风险')# if cls.isNaNo(text):#     return 'null'# else:#     return json.dumps(str(text), ensure_ascii=False)@classmethoddef isNaNo(cls, sth):'''NaN、None或者空字符串返回True,其他情况返回False'''if not sth:return Trueif isinstance(sth, float):if np.isnan(sth):return Truereturn Falseif __name__ == '__main__':# 创建数据库连接psg = PostGreOp()# 执行sql【查询db下所有表】table_name_list = psg.select('''select * from pg_tables''')print(table_name_list)# [#   ('openalex', 'authors_counts_by_year', 'psss', None, False, False, False, False),#   ('openalex', 'authors_ids', 'psss', None, False, False, False, False),#   ('openalex', 'authors_x_concepts', 'psss', None, False, False, False, False),#   ('openalex', 'concepts_ancestors', 'psss', None, False, False, False, False),#   ('pg_catalog', 'pg_statistic', 'postgres', None, True, False, False, False),#   ('pg_catalog', 'pg_type', 'postgres', None, True, False, False, False),#   ('openalex', 'concepts_counts_by_year', 'psss', None, False, False, False, False),#   ('openalex', 'authors', 'psss', None, True, False, False, False),#   ('openalex', 'concepts_ids', 'psss', None, False, False, False, False),#   ('openalex', 'concepts_related_concepts', 'psss', None, False, False, False, False)# ]

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

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

相关文章

《深入浅出LLM 》(二):大模型基础知识

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、…

CPU缓存行及伪共享

CPU Cache概述 随着CPU的频率不断提升,而内存的访问速度却没有质的突破,为了弥补访问内存的速度慢,充分发挥CPU的计算资源,提高CPU整体吞吐量,在CPU与内存之间引入了一级Cache。随着热点数据体积越来越大,…

代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机II ,55. 跳跃游戏 , 45.跳跃游戏II

贪心&#xff1a;只要把每一个上升区间都吃到手&#xff0c;就能一直赚 class Solution { public:int maxProfit(vector<int>& prices) {int res 0;for(int i 1;i< prices.size();i){int diff prices[i] - prices[i-1];if(prices[i] > prices[i-1]){res d…

【Python进阶】argparse库基础用法全总结:高效脚本参数解析 | 参数类型使用代码

argparse库是 Python 标准库中用于解析命令行参数和选项的模块。它使得编写命令行界面&#xff08;CLI&#xff09;变得更加容易。&#xff0c;在深度学习中用到的比较多~~ 我们运行Python文件往往是直接输入命令 python test.py 但是如果我们想给Python文件脚本运行时候传入参…

springMVC的常见问题(面试题)问答

当涉及到Spring MVC的面试题&#xff0c;通常会涉及到该框架的基本概念、工作原理、核心组件以及一些相关的配置和最佳实践。下面是一些常见的Spring MVC面试题及其详细答案&#xff1a; 什么是Spring MVC&#xff1f; Spring MVC是基于Java的Web框架&#xff0c;用于开发Web应…

蓝桥杯练习题总结(二)dfs题、飞机降落、全球变暖

目录 一、飞机降落 二、全球变暖 初始化和输入 确定岛屿 DFS搜索判断岛屿是否会被淹没 计算被淹没的岛屿数量 三、军训排队 一、飞机降落 问题描述&#xff1a; N架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 时刻到达机场上空&#xff0c;到达时它的剩余…

[Linux]文件缓冲区

文件fd 输出重定向除了用dup2()改变数组下标外&#xff0c;还可以用命令来完成 所有的命令执行&#xff0c;都必须有操作系统将其运行起来变成进程&#xff0c;然后根据>>, <<来判断是输入重定向&#xff0c;还是输出重定向。 缓冲区 之所以有缓冲区&#xff0…

2024帝国CMS彩虹易支付插件,兼容易支付里的支付宝支付

1、上传 yunpay 文件夹到 /e/payapi/ 目录 2、在目录 yunpay 内找到 to_pay.php 、 return_url.php 、 notify_url.php 分别将文件内的 //支付API地址 $alipay_config[apiurl] http://XXX.XXX.com/; 改成自己易支付的支付地址 3、后台——其他——在线支付——管理支付接口—…

JavaScript 基础、内置对象、BOM 和 DOM 常用英文单词总结

一提到编程、软件、代码。对于英语不是很熟悉的同学望而却步。其实没有想像中的难么难&#xff0c;反复练习加上自己的思考、总结&#xff0c;会形成肌肉记忆。整理一下&#xff0c;初学者每天30遍。 1、JavaScript 基础语法 break&#xff1a;中断循环或 switch 语句的执行。…

安卓转鸿蒙竟如此丝滑

随着鸿蒙的爆火&#xff0c;大家都想知道鸿蒙能不能搞&#xff1f; 相信大家搞开发的&#xff0c;都多多少少的了解过鸿蒙。近几个月鸿蒙的大动作也不少&#xff0c;如&#xff1a;重庆市近20个垂域应用与鸿蒙原生合作、深圳制定鸿蒙《行动计划》、阿里再次与鸿蒙展开合作&…

树森林试题

01.下列关于树的说法中&#xff0c;正确的是&#xff08;). Ⅰ.对于有n个结点的二叉树&#xff0c;其高度为log2n Ⅱ.完全二叉树中&#xff0c;若一个结点没有左孩子&#xff0c;则它必是叶结点 Ⅲ.高度为h (h>0)的完全二叉树对应的森林所含的树的个数一定是h IV.一棵树中的…

微信小程序开发技巧:canvas实现电子签名

在微信小程序中实现电子签名功能方式很多,本文采用canvas绘制的方式实现。具体实现步骤如下: 在页面中添加canvas元素 <view class"container"><canvas canvas-id"signCanvas" class"canvas" disable-scrolltrue touchstart"sta…

Docker常用命令详解

Docker 是一种用于开发、交付和运行应用程序的开放平台&#xff0c;它允许您将应用程序与其依赖项打包到一个称为容器的轻量级、可移植的容器中。以下是一些常用的 Docker 命令及其详细解释&#xff1a; docker run&#xff1a;运行一个容器。 例如&#xff1a;docker run -it …

Dataset之UCI_autos_cars:UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略

Dataset之UCI_autos_cars&#xff1a;UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略 目录 UCI_autos_imports-85的简介 UCI_autos_imports-85的安装 UCI_autos_imports-85的案例应用 1、训练一个简单的线性回归模型来预测汽车的价格 UCI_autos_i…

跨时钟域学习记录(一)

亚稳态 亚稳态是电平介于高低电平之间的一种暂时状态。在同步系统中&#xff0c;当寄存器的信号无法满足建立时间和保持时间时&#xff0c;输出端的信号就可能出现亚稳态。在异步系统中&#xff0c;亚稳态并非一定在建立时间和保持时间无法满足时出现。   受噪声、温度、电压…

非root用户安装git lfs(git大文件)命令记录

背景 最近在看LLAMA2的模型&#xff0c;想直接从Huggingface下载模型到本地&#xff0c;但是却发现服务器上没有安装git lfs命令。查询了一些资料完成了非root用户安装git lfs命令的操作&#xff0c;特此记录。 Git LFS下载与解压 下载 Git LFS 二进制文件 访问 Git LFS 发布…

SQL语言: 内置函数

字符串函数 CONCAT()&#xff1a;连接两个或多个字符串 SELECT CONCAT(Hello, , World) AS concatenated_string;​ SUBSTRING()&#xff1a;返回指定位置开始的子字符串 SELECT SUBSTRING(Hello World, 7) AS sub_string;LENGTH()&#xff1a;返回字符串的长度 SELECT LENGT…

【vue3.0】实现导出的PDF文件内容是红头文件格式

效果图: 编写文件里面的主要内容 <main><div id"report-box"><p>线索描述</p><p class"label"><span>线索发现时间:</span> <span>{{ detailInfoVal?.problem.createdDate }}</span></p><…

C++经典面试题目(四)

1、请解释const关键字的作用。 在C中&#xff0c;const关键字主要用来表示“不变性”&#xff0c;即被它修饰的东西是不可修改的。它可以用于多种上下文&#xff1a; 修饰基本数据类型变量&#xff1a;声明一个常量&#xff0c;一旦初始化后&#xff0c;其值就不能再更改。 co…

MyBatis3源码深度解析(二十一)动态SQL实现原理(二)动态SQL解析过程、#{}和${}的区别

文章目录 前言8.5 动态SQL解析过程8.5.1 SQL配置转换为SqlSource对象8.5.2 SqlSource转换为静态SQL语句 8.6 #{}和${}的区别8.7 小结 前言 在【MyBatis3源码深度解析(二十)动态SQL实现原理(一)动态SQL的核心组件】中研究了MyBatis动态SQL相关的组件&#xff0c;如SqlSource用于…