1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python3 使用psycopg2模块 批量写入数据到PostgreSQL数据库(最强输出速度 单机数据

Python3 使用psycopg2模块 批量写入数据到PostgreSQL数据库(最强输出速度 单机数据

时间:2021-11-02 23:20:53

相关推荐

Python3 使用psycopg2模块 批量写入数据到PostgreSQL数据库(最强输出速度 单机数据

Python3 使用psycopg2模块 批量写入数据到PostgreSQL数据库(最强输出速度,单机数据库3000W数据写入最多180秒)

1.本文知识点

1)将string或者list类型的数据转换为IO缓冲区中的str类型(指定格式)

2)利用PostgreSQL中的copy_from 和copy_to函数将IO缓冲区中的str类型数据写入数据库中。

2.使用方法

1)写入数据类型为list时

'''功能:将list数据类型多条记录一次写入数据库中数据示例:[[1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7]]'''import psycopg2import pandas as pdfrom io import StringIO# 创建一个示例listdata = [[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'))# 提交mit()cur.close()conn.close()print('成功写入数据库')

2)写入数据类型为str时

'''功能:将1000条如下结构的数据记录一次写入数据库中数据示例:0aaa134341-01-1112...'''import psycopg2from io import StringIOif __name__ == '__main__':s = ""# 循环创建一个字符串,把数据库每一条数据作为一行for i in range(0, 5):# 创建一条数据库记录,记录中每个字段间隔符为table(制表符\t)每一行用换行符\n 隔开下一行s += str(i)+"\taaa\t13434\t1\t-01-11\t1\t2\n"# 创建一个内存对象f,StringIO为存储在内存中的文件,格式为满足文件的任意格式f = StringIO()# 将s数据字符串写入内存f.write(s)# 把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'))# 提交mit()# 关闭游标cur.close()# 关闭数据库连接conn.close()print('成功写入数据库')

Python3 使用psycopg2模块 批量写入数据到PostgreSQL数据库(最强输出速度 单机数据库3000W数据写入最多180秒)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。