环境安装
安装包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:
for index,column_data in enumerate(dataNone.values[di]):
column=columns[index]
if column in date_columns and column_data:
column_data = int(column_data)
if (isinstance(column_data, float) and math.isnan(column_data)) or str(column_data) == 'nan':
column_data = None
插入数据库
log.info("开始写入数据库...")
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("数据库插入结束")
|