环境安装
安装包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.1\jetbrains-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("数据库插入结束")