第一次写博客,我也不知道怎么写,想写点东西,就随便写写(0.0)(0.0),
我在网上搜这个问题的解决办法,给出的答案感觉不是很理想,所以写这篇,随便作为开头。
数据(csv文件中)是通过python的faker库,和random随机生成的。
用python,用的第三方库是pymysql,如果没安装可以用pip install pymysql安装。
要实现这个目的,要经过三步
1,读取到csv文件中的数据
2,数据与mysql语句合并
3,执行sql语句
第一步先放一边,不看
看第二步和第三步
# 需要执行的mysql语句
# insert into table_name(A) values(B)
"""
(A)
在mysql里面需要传入的是列的名字
在python里面应该指的是一个元组
对于(B)
在mysql里应该传入的是数据
对于pathon还是理解为元组
"""
# 我直接给出主要代码
def insert_data(self,table_name, **kwargs):
args = ','.join(kwargs.keys())
# args的类型是str
c = str(tuple(kwargs.values()))
a = f'insert into {table_name}({args})values ' + c
d = a + ';'
self.sql(d)
#第三步,执行
#self.sql是封装的execute和comment
# 这个代码我经过了面向对象的封装,用了**kwargs,而没有用*args
"""
table_name指表的名字
**kwargs,动态参数列表,正好把表名作为键,把数据作为值。在方法里面可以分开,并提取出来
"""
# 假如把d打印出来(有数据了)
# print(d)
# 结果为
# insert into student(name,age,chinese,english,math)values ('周秀珍', 12, 99, 61, 92);
# mysql可以执行
# 如图
第二步,第三步其实已经完成
第一步,直接给出代码
这一步不用多说,不理解可以搜索。
import pandas as pd
a=pd.read_csv(path)
#path 指的的文件路径
for i in a.iterrows():
name=i[1]['name']
age=i[1]['age']
chinese=i[1]['chinese']
english=i[1]['english']
math=i[1]['math']
# name,age等是数据
创建一张表,把上面数据插入
运行前
可以看到是表空的
代码
from logo.go import G
import pandas as pd
g=G()
g.use_db('school')
a=pd.read_csv(path)
for i in a.iterrows():
name=i[1]['name']
age=i[1]['age']
chinese=i[1]['chinese']
english=i[1]['english']
math=i[1]['math']
g.insert_data('student',name=name,age=age,chinese=chinese,english=english,math=math)
g.close()
# 代码是经过封装的
#name=name,第一个name是表的名字,第二个name是数据
运行后
成功,完美