python连接postgresql数据库及操作

1.python连接数据库

1.1 安装相关库

pip install psycopg2
pip install pandas 

1.1 创建连接

import psycopg2
import pandas as pd
conn = psycopg2.connect(database="postgres", user="postgres", password="", host="127.0.0.1", port="5432", client_encoding='utf-8')
cursor = conn.cursor()

1.1 关闭连接

cursor.close()
conn.close()

2.python postgresql创建表

2.1 创建连接

import psycopg2
import pandas as pd
conn = psycopg2.connect(database="mapdb", user="postgres", password="", host="127.0.0.1", port="5432", client_encoding='utf-8')
cursor = conn.cursor()

2.2 创建事务提交函数

def func_conn(conn,cursor,sql):
    try:  
        cursor.execute(sql)    
        conn.commit()        
        print("successfully")
    except Exception as e:   
        print('error',e) 
        conn.rollback()  

2.3 创建表语句并调用函数

sql= """CREATE TABLE climate
       (ID INT PRIMARY KEY NOT NULL,
       date date NOT NULL
);"""
func_conn(conn,cursor,sql)

2.4 关闭连接

cursor.close()
conn.close()

3.python postgresql批量插入表数据

3.1 创建连接

import psycopg2
import pandas as pd
from io import StringIO
conn = psycopg2.connect(database="mapdb", user="postgres", password="", host="127.0.0.1", port="5432", client_encoding='utf-8')
cursor = conn.cursor()

3.2 创建插入表数据函数

conn = psycopg2.connect(host='127.0.0.1', user="postgres", password="", database="mapdb")
cur = conn.cursor()
def insert_table(data,table_name):
    try:
        f = StringIO()
        data.to_csv(f, sep='\t', index=False, header=False)
        f.seek(0)   
        cur.copy_from(f,table_name,columns=data.columns.to_list()) # 将内存对象f中的数据写入数据库,参数columns为所有列的元组
        conn.commit()
        f.close()
        print('成功写入数据库')
    except Exception as e:
        print(e)
        conn.rollback()
        f.close()

3.3 读取表数据,调用函数

# 注意:插入数据时,数据库中需要存在这张表
data=pd.read_csv('data/data.csv')
insert_table(data,'table_name')

3.4 关闭连接

cursor.close()
conn.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荼靡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值