加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

让你在10分钟内掌握如何用Python将数据批量的插入到数据库

发布时间:2021-05-23 14:05:21 所属栏目:大数据 来源:互联网
导读:本文基于python, 使用pandas, pymysql等三方库实现了向数据库中高效批量插入数据,一方面提供被网上很多瞎转载的答案给坑蒙了的人(因为我也是),一方面自己也做

conn = mysql_conn("your db host""your username""your password""db name"

cursor = conn.cursor() 

# 开启事务 

conn.begin() 

 

#############      构造批量数据的过程            ############# 

 

# 先构造需要的或是和数据库相匹配的列 

columns = list(df.columns) 

# 可以删除不要的列或者数据库没有的列名 

columns.remove("列名"

# 重新构造df,用上面的columns,到这里你要保证你所有列都要准备往数据库写入了 

new_df = df[columns].copy() 

 

# 构造符合sql语句的列,因为sql语句是带有逗号分隔的,(这个对应上面的sql语句的(column1, column2, column3)) 

columns = ','.join(list(new_df.columns)) 

 

# 构造每个列对应的数据,对应于上面的((value1, value2, value3)) 

data_list = [tuple(i) for i in gdsord_df.values] # 每个元组都是一条数据,根据df行数生成多少元组数据 

 

# 计算一行有多少value值需要用字符串占位 

s_count = len(data_list[0]) * "%s," 

 

# 构造sql语句 

insert_sql = "insert into " + "数据库表名" + " (" + columns + ") values (" + s_count[:-1] + ")" 

将数据写入数据库

这个简单,直接上代码

cursor.executemany(insert_sql, data_list) 

conn.commit() 

cursor.close() 

conn.close() 

检查数据库是否插入成功

如果没问题的话,就可以同时进行多个文件读写,计算,最后启用多线程同时向数据库中写入数据了,非常高效!

完整代码

import pandas as pd  

import numpy as np 

 

 

# pymysql接口 

def mysql_conn(host, userpassword, db, port=3306, charset="utf8"): 

  conn = pymysql.connect(host=host, user=userpassword=passworddatabase=db, port=port, charset=charset) 

  return conn 

 

 

# 当前脚本的位置 

current_folder_path = os.path.dirname(__file__) 

 

# 你的文件的位置 

your_file_path1 = os.path.join(current_folder_path, "文件的名字1"

your_file_path2 = os.path.join(current_folder_path, "文件的名字2"

 

# 我这里是以读取csv文件为例, delimiter为我们内部约定的列之间的分割符 

df1 = pd.read_csv(your_file_path1, dtype={"column1": str, "column2": str}, delimiter="/t"

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读