我有一个像这样的模型:
class Schedule(db.Model):
__tablename__ = 'schedule'
id = db.Column(db.Integer, primary_key=True)
day = db.Column(db.Enum(DayNameList, name='day'))
start_at = db.Column(db.Time())
end_at = db.Column(db.Time())
如果插入一本字典,我们可以使用这种方式:
time_schedule = {'day': 'Wednesday', 'end_at': '03:00', 'start_at': '02:00'}
schedule = Schedule(**time_schedule)
db.session.add(schedule)
db.session.commit()
现在,我想在列表中插入多个词典。这是我的字典的片段:
list_of_dict_time_schedule = [{'day': 'Wednesday', 'end_at': '03:00', 'start_at': '02:00'}, {'day': 'Friday', 'end_at': '06:00', 'start_at': '17:01'}]
我试图这样插入它:
dictionary_time_schedule = {}
for data in list_of_dict_time_schedule:
for key, value in data.items():
dictionary_time_schedule[key] = value
time_schedule = Schedule(**dictionary_time_schedule)
但是,只是将循环中的最后一个字典插入到我的数据库中,它就是:
{'day': 'Friday', 'end_at': '06:00', 'start_at': '17:01'}
那么,如何使用Flask-SQLALchemy ..将列表中的多个字典插入数据库?
编辑:我也这样尝试过:
for data in list_of_dict_time_schedule:
time_schedule = Schedule(day=data['day'], start_at=data['start_at'], end_at=data['end_at'])
但是仍然与上面相同,只是将循环列表上的最新字典插入到数据库中。
如注释中所述,您需要将每个新对象添加到会话中。另外,您可以使用.from_dict()
方法“自动填充”您的类属性。
schedules = [{'day': 'Wednesday', 'end_at': '03:00', 'start_at': '02:00'}, {'day': 'Friday', 'end_at': '06:00', 'start_at': '17:01'}]
for sched in schedules:
new_schedule = Schedule().from_dict(sched)
db.session.add(new_schedule)
db.session.commit()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句