python - sqlalchemy 批量插入的數(shù)據(jù),數(shù)據(jù)列不相等
問題描述
# 初始化數(shù)據(jù)庫連接:engine = create_engine('xxxxx')# 創(chuàng)建DBSession類型:DBSession = sessionmaker(bind=engine)session = DBSession()# 測試沒有問題的數(shù)據(jù)rows_ok = [ {'name':'aaa','otherdata':'exist_col_aaa'}, {'name':'bbb','otherdata':'exist_col'},]# 測試出問題的數(shù)據(jù)rows = [ {'name':'aaa'}, {'name':'bbb','otherdata':'exist_col'},]# User中有name,otherdata字段session.execute(User.__table__.insert(),rows)session.commit()session.close()
如果批量插入數(shù)據(jù)中所有字典的key一致,則數(shù)據(jù)能保存
只要List中字典缺失一個key,會導致整個列被忽略
真實的情況列數(shù)很多,而且缺失數(shù)據(jù)也很多.有沒有解決辦法,或者使用其它方法?
或者將
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
