如何使用 dict_to_model 将字典键映射到 PeeWee 中的模型字段

How to map dictionary keys to model fields in PeeWee with dict_to_model

如何在不更改模型属性的情况下使用 dict_to_model() 从字典值填充(将数据插入)table?我有一个模型,视频,具有以下属性:

class Video(model):
    id = IntegerField()
    camera = CharField()
    channel = IntegerField()
    filename = CharField()

我还有一个数据字典:

data = {'video_id': 1234, 'camera_name': "canon", 'channel_id': 5, 'video_name' = "intro.mp4"}

dict 中的每个 key:value 对对应一个列及其数据。据我了解,我可以使用 playhouse.shortcuts 中的 dict_to_model 函数将字典键映射到 table 列并对字典中的值进行操作。如何在不更改 class 属性名称的情况下执行此操作?我能让它工作的唯一方法是将 Video.id 更改为 Video.video_id 以便它与字典匹配等等。即使这样,.save() 语句也不会将数据推送到 table。如果我不更改我的模型属性,我会得到:

AttributeError: Unrecognized attribute "video_id" for model class <Model: Video>

如果我更改我的属性以匹配字典,它会接受映射但不会将数据发送到 table。

字典和模型字段应该匹配,因此您必须重命名字典字段或模型字段。

另请查看 peewee quickstart

中的“存储数据”部分
uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15))
uncle_bob.save() # bob is now stored in the database

可能在将 dict 转换为模型后你需要调用 .save() 方法