Python 在MongoAlchemy中创建动态文档

Python 在MongoAlchemy中创建动态文档,python,flask,mongoalchemy,Python,Flask,Mongoalchemy,我正在使用Flask MongoAlchemy进行一个个人项目。我有一些.cfg输入文件,我想解析这些文件并将其转换成mongodb文档条目。不幸的是,.cfg文件是平面文件,我想从每个文件生成多个不同的文档。我想在一个地方定义我想要使用的结构(在一个单独的.cfg文件中),1)在解析时将输入文件转换成这种格式,2)使用这种结构创建MongoAlchemy文档类。我只在#2方面遇到了麻烦,但我对解决这两个目标的替代实现持开放态度 这是我的input.cfg文件。我想把它做成多个mongodb文档

我正在使用Flask MongoAlchemy进行一个个人项目。我有一些.cfg输入文件,我想解析这些文件并将其转换成mongodb文档条目。不幸的是,.cfg文件是平面文件,我想从每个文件生成多个不同的文档。我想在一个地方定义我想要使用的结构(在一个单独的.cfg文件中),1)在解析时将输入文件转换成这种格式,2)使用这种结构创建MongoAlchemy文档类。我只在#2方面遇到了麻烦,但我对解决这两个目标的替代实现持开放态度

这是我的input.cfg文件。我想把它做成多个mongodb文档

[foo]
a = val1
b = val2
c = val3
d = val4
下面是定义结构的documents.cfg。这些值是用于区分类型的数字

[foo]
    [[bar]]
    a = 1
    b = 1
    [[baz]]
    c = 2
    d = 1
下面是类定义

类栏(db.Document):
#从kwargs添加类属性
@类方法
def初始值(cls,**kwargs):
对于k,v在kwargs.items()中:
如果v==1:
setattr(cls,k,db.IntField(最小值=0))
Baz类(数据库文件):
#从kwargs添加类属性
@类方法
def初始值(cls,**kwargs):
对于k,v在kwargs.items()中:
如果v==1:
setattr(cls,k,db.IntField(最小值=0))
elif v==2:
setattr(cls,k,db.StringField())
我解析documents.cfg以创建两个dict:

bar_dict = {'a': '1', 'b': '1'}
baz_dict = {'c': '2', 'd': '1'}
然后我将它们传递给相应的init()方法

这将成功添加属性。但是,在创建Bar(或Baz)的实例时,我遇到了这个错误

mongoalchemy.exceptions.ExtraValueException: a
我的猜测是,这与MongoAlchemy字段应该是类属性,而不是实例属性这一事实有关。有什么帮助吗

class Bar(db.Document):
    config_extra_fields = 'ignore'
    ...

class Baz(db.Document):
    config_extra_fields = 'ignore'
    ...
class Bar(db.Document):
    config_extra_fields = 'ignore'
    ...

class Baz(db.Document):
    config_extra_fields = 'ignore'
    ...