Python连接postgreSQL

在公司中需要使用到数据库postgreSQL.这个数据库管理和使用方便,也是现在的主流数据库之一,关键是免费。
这时候就需要使用到将数据使用python导入到postgreSQL.然后再更新

1.导入数据库

代码如下:主要还是参考了网络上的代码片段,然后自己修改成所需要的内容。
import psycopg2
import pandas as pd
from io import StringIO
# 创建一个示例list
data = [[1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7]]
# 将list转换为DataFrame类型
data1 = pd.DataFrame(data)
# 创建一个内存对象f,StringIO为存储在内存中的文件,格式为满足文件的任意格式
f = StringIO()
# DataFrame 类型数据转换为IO缓冲区中的str类型
data1.to_csv(f, sep='\t', index=False, header=False)# 把f的游标移到第一位,write方法后,游标会变成最尾,使用StringIO(**)则不会
f.seek(0)# 连接数据库
conn = psycopg2.connect(host='127.0.0.1', user="postgres", password="123456", database="postgres")
# 创建游标
cur = conn.cursor()
# 将内存对象f中的数据写入数据库,参数columns为所有列的元组
cur.copy_from(f, 'tb_user', columns=('id', 'userame', 'passwd', 'roleid', 'lasttime', 'failnum', 'info'))
# 提交
conn.commit()
cur.close()
conn.close()
print('成功写入数据库')

源码如上,在自己使用的过程中,将起改编成独立的函数就好了。

2.数据更新

后续很多的数据需要更新,也希望简化代码的工作量,于是借用了网络上的代码,将其搞成类,然后进行批量的调用,参考的代码如下,需要的小朋友可以自己改改代码。

# -*- coding: utf-8 -*-
"""
Created on Sat Jan 30 10:38:06 2021

@author: LSNCSZH
"""

import psycopg2
class PostGreSQL:
    # 初始化
    def __init__(self, dataBaseName, userName, password, host, port):
        self.dataBaseName = dataBaseName
        self.userName = userName
        self.password = password
        self.host = host
        self.port = port

        self._conn = self.GetConnect()
        if self._conn:
            self._cur = self._conn.cursor()

    # 获取数据库连接对象
    def GetConnect(self):
        conn = False
        try:
            conn = psycopg2.connect(
                database=self.dataBaseName,
                user=self.userName,
                password=self.password,
                host=self.host,
                port=self.port
            )
        except Exception as err:
            print("连接数据库失败,%s" % err)
        return conn
    # 执行查询sql
    def ExecQuery(self, sql):
        res = ""
        try:
            self._cur.execute(sql)
            res = self._cur.fetchall()
        except Exception as err:
            print("查询失败, %s" % err)
        else:
            return res

    # 执行增删改sql
    def ExceNonQuery(self, sql):
        flag = False
        try:
            self._cur.execute(sql)
            self._conn.commit()
            flag = True
        except Exception as err:
            flag = False
            self._conn.rollback()
            print("执行失败, %s" % err)
        else:
            return flag

    def GetConnectInfo(self):
        print("连接信息:")
        print("服务器:%s , 用户名:%s , 数据库:%s " % (self.host, self.userName, self.dataBaseName))

3.后期维护

目前,测试来看更新是快,还没什么问题。

一切很OK
,结果如下。
在这里插入图片描述
后续看看,有没有其他更加简单的方法来搞。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值