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

python环境安装、读取excel数据插入数据库demo

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

python环境安装、读取excel数据插入数据库demo

环境安装 安装包python-3.8.2-amd64.exe

链接:https://pan.baidu.com/s/1GP2gy3HSU2dgq0Sb2y4xJA
提取码:6wnv
–来自百度网盘超级会员V4的分享

编辑器pycharm

链接:https://pan.baidu.com/s/1fCMV8zZVxJ1Bcq259wmy2A
提取码:0fil
–来自百度网盘超级会员V4的分享

激活与idea同理,下载jetbrains-agent_2019.3.1.jar Custom VM…最后一行添加文件路径

-javaagent:G:PyCharm 2019.3.1jetbrains-agent_2019.3.1.jar

开发中… 语法错误

声明主函数没有调用或者调用名称要定格不能留有空格pydev debugger: process 16608 is connecting

利用sqlacodegen自动生成ORM实体类

安装sqlacodegen: pip install sqlacodegen

自动生成命令: sqlacodegen mysql://{用户名}:{密码}@{数据库链接地址}:{端口号}/{数据库} > {自定义文件名}.py

报错安装: pip install mysqlclient

读取excel

读取文件

# 路径注意转义  一定要加sheet_name=None,才能读取出所有的sheet,否则默认读取第一个sheet,且获取到的keys是第一行的值
# 如果异常  左上角 File-->Settings--->project -->+号搜索安装openpyxl
df = pd.read_excel(file_name, sheet_name=None)

遍历文件 按sheet

for i in df.keys():
    dataNone = pd.read_excel(file_name,sheet_name=i, usecols=None)
    columns = dataNone.columns

遍历sheet 按行获取数据

# 获取行号的索引,并对其进行遍历:
for di in dataNone.index.values:
    # enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
    for index,column_data in enumerate(dataNone.values[di]):
        #value值  column_data
        #列名
        column=columns[index]
        #转int
        if column in date_columns and column_data:
           column_data = int(column_data)
        #转None值
        if (isinstance(column_data, float) and math.isnan(column_data)) or str(column_data) == 'nan':
            column_data = None
        
插入数据库
log.info("开始写入数据库...")
# sqlacodegen 生成的文件SCbtMapping
insert_type = SCbtMapping.__table__.insert()
table_name = SCbtMapping.__tablename__
session = sessionmaker(engine)()
try:
	# 批量分页删除
    if del_conditions:
        del_len = len(del_conditions)
        del_count = 0
        while del_count < del_len:
            del_condition = del_conditions[del_count:del_count + 500]
            session.execute(f"delete from {table_name} where {' or '.join(del_condition)}")
            del_count += 500
    # 插入数据
    session.execute(
        insert_type,
        result_data
    )
    session.commit()
except Exception as e:
    log.error(e)
    log.error("插入BO数据库失败")
    session.rollback()
    raise e
finally:
    session.close()
    log.info("数据库插入结束")
r(e)
    log.error("插入BO数据库失败")
    session.rollback()
    raise e
finally:
    session.close()
    log.info("数据库插入结束")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656517.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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