个人记录:连接、查询、写入PG数据库类文件
# --coding:utf-8--
import pandas as pd
import yaml
from sqlalchemy import create_engine
import psycopg2
class ControlPGSQL:
def __init__(self, path):
'''
path:记录有pg数据库账号密码的yaml配置文件地址
'''
self.path = path
def CreatePGengine(self):
'''
:return: PG链接
'''
with open(f"{self.path}", "r", encoding="utf-8") as config:
cfg = yaml.safe_load(config)
db_info = cfg['db_info']
con_database = create_engine(
'postgresql+psycopg2://{user}:{password}@{host}:{port}/{database}'.format(**db_info))
return con_database
def ConPG(self):
with open(f"{self.path}", "r", encoding="utf-8") as config:
cfg = yaml.safe_load(config)
db_info = cfg['db_info']
conn = psycopg2.connect(database=db_info['database'],
user=db_info['user'],
password=db_info['password'],
host=db_info['host'],
port=db_info['port'],)
return conn
def read_sql(self, sql):
'''
读取postgresSQL数据库中的表
:param sql: 数据库的链接指令
:return:表dataframe
'''
con_database = self.CreatePGengine()
# 从公司数据库读取 原始的入库 数据表
databaseData = pd.read_sql(sql, con=con_database)
return databaseData
def run_read(self, mt_info):
'''
:param mt_info: sql的表名与字段,以及字段对应的重命名columns列表
:return: 数据表
'''
sql = "SELECT {field} FROM {modename}.{tablename} where {condition}".format(
**mt_info)
table = self.read_sql(sql)
table.columns = mt_info['columns']
return table
def write_sql(self, sql):
'''
写入postgresSQL数据库中
:param sql: 数据库的链接指令
:return:
'''
con_database = self.ConPG()
cursor = con_database.cursor()
cursor.execute(sql)
# 提交SQL命令
con_database.commit()
个人记录:连接、查询、写入PG数据库类文件的更多相关文章
- pg数据库data文件夹达到32G
最近工作中遇到pg数据库data文件夹大小达到32G,大致的排查流程如下: 1.首先查看是哪个文件或者那些文件比较大: 2.根据文件的名称找到对应的数据表a: 3.确认数据表a中数据实际上只有3000 ...
- SQL多表连接查询以及mysql数据库、sqlserver数据库常见不同点
mysql数据库表及数据准备语句: USE test; DROP TABLE IF EXISTS `teacher_table`; DROP TABLE IF EXISTS `student_tabl ...
- mysql/mariadb学习记录——连接查询(JOIN)
//本文使用的数据表格//persons表中id_p为主键//orders表中id_o为主键,id_p为外键参考persons表中的id_p mysql> select * from perso ...
- MySQL8:连接查询
连接查询 连接是关系型数据库模型的主要特点. 连接查询是关系型数据库中最主要的查询,主要包括内连接.外连接等通过联结运算符可以实现多个表查询. 在关系型数据库管理系统中,表建立时各种数据之间的关系不必 ...
- SQL2008和SQL2000可以跨服务器连接查询的测试实例
测试目的: SQL2008 和 SQL2000 是否可以跨服务器连接查询 -- 测试环境: --A 虚拟机 XP ( IP : .0.0.213 )安装 SQL2000 个人版,并安装 SP4 补丁. ...
- mysql_数据查询_连接查询
连接查询 1.连接(join) 也称θ连接,从两个关系的笛卡尔积中选择属性间满足一定条件的元组. 等值连接:θ为“=”的连接运算称为等值连接.从关系R和S的广义笛卡尔积中选取A.B属性值相等的元组. ...
- T-SQL——关于跨库连接查询
目录 0. 同一台服务器不同数据库 1. 使用跨库查询函数--OpenDataSource() 2. 使用链接服务器(Linking Server) 3. 使用OpenDataSource()函数和链 ...
- JPA连接PG数据库时间类型查询报错的修改
PG数据库中的时间格式规范: https://blog.csdn.net/sky_limitless/article/details/79527665 to_data 转换为 普通的时间格式 to_t ...
- MySQL入门第二天——记录操作与连接查询
常见SQL语法,请参见w3school:http://www.w3school.com.cn/sql/sql_distinct.asp 易百教程:http://www.yiibai.com/sql/f ...
- 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串
第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...
随机推荐
- vue3 快速入门系列 —— 组件通信
vue3 快速入门系列 - 组件通信 组件通信在开发中非常重要,通信就是你给我一点东西,我给你一点东西. 本篇将分析 vue3 中组件间的通信方式. Tip:下文提到的绝大多数通信方式在 vue2 中 ...
- 关于mac使用figma以及企业微信3.1.18版本,CPU系统占用率飙升至70%
问题描述 使用一段时间正常,不知道是修改了什么设置,还是有什么软件冲突,导致cpu使用率极高 系统进程中有一个 kernel_task 占用了大量的cpu 并且该占用并不会消失,只要figma打开就会 ...
- unity 3d导出安卓包时报错:A failure occurred while executing com.android.build.gradle.internal.tasks.workers$actionfacade see the console for details
unity 3d导出安卓包时报错:A failure occurred while executing com.android.build.gradle.internal.tasks.workers$ ...
- 【数学】向量点乘、叉乘的理论、应用及代码实现(C++)
前言 我总结了一下向量点乘,叉乘的概念,以及他们的应用及相关C++代码的实现.blog 这类问题也是技术面试经常碰到的,一次研究透了会有收获. 1 向量 向量具有大小和方向. 共线向量:两个平行的向量 ...
- HL7简介
HL7是特定于医疗保健的标准组织,其主要重点是创建一组定义的国际消息传递标准,以支持应用程序和设备之间的互操作性和通信.这些消息标准可以分为三个主要的 HL7标准版本,HL7版本2(v2).版本3(v ...
- 无缝衔接 gRPC 与 dubbo-go
最近我们 dubbo-go 社区里面,呼声很大的一个 feature 就是对 gRPC 的支持.在某位大佬的不懈努力之下,终于弄出来了. 今天我就给大家分析一下大佬是怎么连接 dubbo-go 和 g ...
- Schedulerx2.0支持应用级别资源管理和任务优先级
1. 前言 Schedulerx2.0是一套分布式的任务调度+计算框架.作为一套分布式计算引擎,用户经常需要资源管理的需求,当前schedulerx仅仅支持单个任务实例的管控(比如单机子任务并发数.拉 ...
- 喜马拉雅 Apache RocketMQ 消息治理实践
简介:本文通过喜马拉雅的RocketMQ治理实践分享,让大家了解使用消息中间件过程中可能遇到的问题,避免实战中踩坑. 作者:曹融,来自喜马拉雅,从事微服务和消息相关中间件开发. 本文通过喜马拉雅 ...
- (数据科学学习手札160)使用miniforge代替miniconda
本文已收录至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,conda作为Python数据科学领域 ...
- 第3讲-Cadence分裂元件的制作方法
笔记3-Cadence分裂元件的制作方法 1.Homogeneous和heterogeneous的区别: 2.创建homogeneous类型元件: 3.创建heterogeneous类型元件. 把元件 ...