这篇博客介绍了如何使用Python的pandas和pymysql库将CSV数据存入MySQL数据库。首先通过pandas读取CSV文件,然后利用sqlalchemy将数据存入数据库的user01表。接着,使用pymysql创建user02表,并分块处理CSV数据,逐条插入数据库。整个过程详细展示了Python操作MySQL数据库的方法。
摘要由CSDN通过智能技术生成
数据练习集
user_data.csv练习数据集
https://download.csdn.net/download/Hudas/85712209?spm=1001.2014.3001.5503
导入数据集
import pandas as pd
# 读取数据
data = pd.read_csv(r'C:\Users\HP\Desktop\user_data.csv')
# 1048575行记录,6列字段
data.shape # (1048575, 6)
1.利用Pandas sqlalchemy
import pandas as pd
from sqlalchemy import create_engine
# 创建数据库对象
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
# 读取数据
data = pd.read_csv(r'C:\Users\HP\Desktop\user_data.csv')
# 将数据存入到Mysql数据库中的user01数据表中
data.to_sql('user01',engine,chunksize=100000,index=None)
print('存入成功!')
2.利用Python pymysql
PyMySQL是在Python3.x版本中用于连接Mysql服务器的一个库
注意:
引入
import pymysql
之前需要进行安装
CREATE TABLE `user02` (
`user_id` bigint(20) DEFAULT NULL,
`item_id` bigint(20) DEFAULT NULL,
`behavior_type` bigint(20) DEFAULT NULL,
`user_geohash` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`item_category` bigint(20) DEFAULT NULL,
`time` text CHARACTER SET utf8 COLLATE utf8_general_ci
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
import pandas as pd
import pymysql
# 设置数据库连接信息:ip地址、用户名、密码、数据库名、端口号、字符集
conn = pymysql.connect(
host='127.0.0.1',
user='root',
passwd='123456',
db='test',
port = 3306,
charset="utf8")
# 分块处理
# 因为数据量庞大,所以设置每次只处理100000条数据
big_size = 100000
with pd.read_csv(r'C:\Users\HP\Desktop\user_data.csv',chunksize=big_size) as reader:
for df in reader:
datas = []
print('处理:',len(df))
for i ,j in df.iterrows():
data = (j['user_id'],j['item_id'],j['behavior_type'],j['item_category'],j['time'])
datas.append(data)
_values = ",".join(['%s', ] * 5)
# sql插入语句
sql = """insert into user02(user_id,item_id,behavior_type,item_category,time) values(%s)""" % _values
# 使用cursor()方法创建一个游标对象cursor
cursor = conn.cursor()
# 执行sql语句
cursor.executemany(sql,datas)
# 提交到数据库执行
conn.commit()
# 关闭数据库连接
conn.close()
cursor.close()
print('存入成功!')
提示Tips:
使用connect()方法连接数据库时,额外设置字符集 charset=utf-8,可以防止插入中文时出错
扩展阅读资料
利用Python操作Mysql数据库
https://blog.csdn.net/Hudas/article/details/124255734
class ConnectionDatabase(object):
# 连接
mysql
数据库
def __init__(self, ip, user_name, passwd, db, char='utf8'):
self.ip = ip
# self.port = port
python
实现将elasticsearch
读取
,转为dataframe,并
写入
到
mysql
1、在使用create_engine(db_connect)部分,要进行
mysql
的modul的安装;
否则会报找不到
mysql
的错;
from elasticsearch import Elasticsearch
import
pandas
as pd
from sqlalchemy import create_engine
from urllib.parse import quote_plus
import time
conn =
MySQL
db.connect(host='xx.xx.xx.xx', port=3306, db='test_for_performance', user='root',
python
连接
mysql
还使用了不少时间...,相比php困难多了..麻烦的.. 而php,就容易的多兰..
python
标准库没
mysql
库,只好第三方兰..
先看累挂..说
MySQL
db...三,不行..
1.
MySQL
db(
MySQL
-
python
1.2.3)支持派森
python
2.7的直接windows安装包,用的pyth...
最近有一个往Excel文件中不同的工作簿
写入
大量
数据
的需求,如下图所示,有三个工作簿,每个工作簿中的
数据
量不同,向一个工作簿中
写入
数据
时需要将上一次
写入
的
数据
清空,且其它两个工作簿的
数据
不能清空。
网上大部分的教程都是一条一条的往里面
写入
,这种效率太低,而且耗时太长。或者就是一次往一个工作簿
写入
数据
时,会将之前的全部
数据
覆盖,也不太符合要求。
下面是自己的实现方式
我使用的是openpyxl和
pandas
模块相结合使用的。在
写入
数据
时,首先会将
写入
的
数据
长度与Excel表中某一个工作簿中的
数据
长度进行对比
python
是一门开发语言,可以用来写大型项目,也可以用来写脚本,比如
自动
化脚本,也可以用来写工具。
我们平时做测试,不一定做
自动
化测试才用去
python
,做功能测试,也就是点点点,也可以把它用起来。
比如,我现在页面有一个功能,导入的功能,我想测它最大支持多少
数据
量导入,或者说多大的文件导入,那么我们得在excel中
写入
很多条
数据
(导入模板是xls,xl...
山茶花开时。:
[SAP ABAP] SMW0上传模板
山茶花开时。: