您的位置:首页技术文章
文章详情页

python - sqlalchemy 批量插入的数据,数据列不相等

【字号: 日期:2022-06-28 14:15:57浏览:17作者:猪猪

问题描述

# 初始化数据库连接:engine = create_engine('xxxxx')# 创建DBSession类型:DBSession = sessionmaker(bind=engine)session = DBSession()# 测试没有问题的数据rows_ok = [ {'name':'aaa','otherdata':'exist_col_aaa'}, {'name':'bbb','otherdata':'exist_col'},]# 测试出问题的数据rows = [ {'name':'aaa'}, {'name':'bbb','otherdata':'exist_col'},]# User中有name,otherdata字段session.execute(User.__table__.insert(),rows)session.commit()session.close()

如果批量插入数据中所有字典的key一致,则数据能保存

只要List中字典缺失一个key,会导致整个列被忽略

真实的情况列数很多,而且缺失数据也很多.有没有解决办法,或者使用其它方法?

或者将

rows = [ {'name':'aaa'}, {'name':'aaa'}, {'name':'aaa'}, {'name':'aaa'}, {'name':'bbb','otherdata':'exist_col',....},]

转化为

rows = [ {'name':'aaa','otherdata':'',....}, {'name':'aaa','otherdata':'',....}, {'name':'aaa','otherdata':'',....}, {'name':'aaa','otherdata':'',....}, {'name':'bbb','otherdata':'exist_col',....},]

问题解答

回答1:

schema定义的时候, 用nullable=False

用session.add_all

标签: Python 编程