900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python读取excel文件数据写入MySQL数据库(入门级)

python读取excel文件数据写入MySQL数据库(入门级)

时间:2019-01-23 12:21:19

相关推荐

python读取excel文件数据写入MySQL数据库(入门级)

写入前准备

1.window电脑提前安装好MySQL

2.知道自己MySQL的密码和用户名

3.提前建好要写入的数据库和数据表

1.首先测试写入一条数据进去MySQL在尝试批量写入

1.1第一数据类型(2, '万科A', 24.33, '-0.17', '-0.0069', '24.5', '24.56', '24.62', '24.23', '601455手', '147029万', '6.8', '0.0062', '116.18亿','97.18亿')

1.2,确保自己使用是哪一个数据库和写入那个表,确保自己密码是正确的。

import pymysqlcon = pymysql.connect(host='localhost', user='root',passwd='pan123456', charset='utf8')cur = con.cursor()cur.execute('create database awesome character set utf8')cur.execute('use awesome')sqlSentence1= 'create table stock(代码 VARCHAR(20), 名称 VARCHAR(20),最新 float,涨跌 float,涨跌幅 float\,前收 float,开盘 float, 最高 float, 最低 float, 成交量 VARCHAR(20), 成交额 VARCHAR(20),市盈率 VARCHAR(210),\换手率 bigint,总股本 VARCHAR(20), 流通股本 VARCHAR(20) )'cur.execute(sqlSentence1)print('ok table')"""插入数据"""val1 = (2, '万科A', 24.33, '-0.17', '-0.0069', '24.5', '24.56', '24.62', '24.23', '601455手', '147029万', '6.8', '0.0062', '116.18亿','97.18亿')val=tuple(val1)print(val)sql = "INSERT INTO stock(代码,名称,最新,涨跌,涨跌幅,前收,开盘,最高,最低,成交量,成交额,市盈率,换手率,总股本,流通股本) VALUES \(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"\# %(val[0],val[1],val[2],val[3],val[4],val[5],val[6],val[7],val[8],val[9],val[10],val[11],val[12],val[13],val[14])print(sql)cur.executemany(sql,[val])mit()

2.excel的数据结构类型

3.通过excel数据批量写入MySQL

注意:写入excel表的时候,表格里面可能会出现数据缺失和空值的情况需要在写入MySQL前处理这种情况否则会报错

import pymysqlimport pandas as pdimport oscon = pymysql.connect(host='localhost', user='root',passwd='pan123456', charset='utf8')cur = con.cursor()cur.execute('create database awesome character set utf8')cur.execute('use awesome')print('ok table')"""插入数据"""# 获取文档df = pd.read_excel("数据.xls")sqlSentence1= 'create table stock(代码 VARCHAR(20), 名称 VARCHAR(20),最新 float,涨跌 float,涨跌幅 float\,前收 float,开盘 float, 最高 float, 最低 float, 成交量 VARCHAR(20), 成交额 VARCHAR(20),市盈率 VARCHAR(210),\换手率 bigint,总股本 VARCHAR(20), 流通股本 VARCHAR(20) )'cur.execute(sqlSentence1)# 获取文档的长度length = len(df)for i in range(0, length):# 数据转字符类型record = tuple(df.loc[i])# 插入表数据sqlSentence="INSERT INTO stock (代码,名称,最新,涨跌,涨跌幅,前收,开盘,最高,最低, \成交量,成交额,市盈率,换手率,总股本,流通股本) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"\# 把空值,或者缺失填充sqlSentence = sqlSentence.replace('nan', 'null').replace('None', 'null').replace('none', 'null')# 按照循环依次打印cur.executemany(sqlSentence, [record])# 结束,关闭cur.close()mit()con.close()print(i)

4.提前在MySQL上面创建表和字段名

上面代码的运行结果

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