python - sqlalchemy 批量插入的數據,數據列不相等
問題描述
# 初始化數據庫連接: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
