栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 pymysql
con = 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])
con.commit()

2.excel的数据结构类型

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

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

import pymysql
import pandas as pd
import os
con = 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()
con.commit()
con.close()
print(i)

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

上面代码的运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号