python - 从json模式动态创建mongoengine类

标签 python json mongoengine jsonschema

我正在寻找一种采用json模式并在运行时动态创建mongoengine类的方法。

例如:
下面编写的mongoengine类

class user(Document):
     _id  = StringField(required=False) # mongodb id
     name = StringField(required=True)  # user name
     email= StringField(required=False,regex="^[a-zA-Z0-9]*@mydomain.com$")  # user email

将与此模式生成的在运行时动态生成的类相同
{
"type":"object",
"properties":{
    "_id"      : {"type":"string"},
    "name"     : {"type":"string"},
    "email"    : {"pattern":"^[a-zA-Z0-9]*@mydomain.com$"}
    }
}

有什么建议么?

最佳答案

您可以动态创建python类,如下所示:

user_properties = { 
   '_id': StringField(required=False), # mongodb id
   'name': StringField(required=True), # user name
   'email': StringField(required=False,regex="^[a-zA-Z0-9]*@mydomain.com$"),  # user email
}
User = type("User", (Document, ), user_properties)
其余的仅是来自dict的转换器,其输入上提供了“您的模式”,该转换器将转换为dict user_properties
另外,这是my answer,也可以解决类似的问题“How to generate a model for a mongoengine Document from an already existing collection”。

关于python - 从json模式动态创建mongoengine类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33920062/

相关文章:

python - 将dict对象添加到postgresql

python - 有没有更好的方法将模型转换为格式良好的 JSON 字符串?

python - 反正有没有使用mongoengine在列中获得最大值?

python - 保存 ImageField mongoengine

python - “TopLevelDocumentMetaclass”对象不可迭代

python - 如何从一行覆盖多行(iloc/loc 差异)?

python - 如何使用二次回归?

python - XGBOOST 特征名称错误 - Python

javascript - 将 MVC 模型转换为 Knockout JS ViewModel

java - 在失败和错误情况下使用什么 : WebApplicationException vs Response?