从配置文件或数据库中读取Colander模式

2024-04-23 22:58:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在google上搜索了一段时间,但找不到关于如何从配置文件或数据库中检索Colander模式的参考资料。我认为这不难实现,但我可能忽略了一些东西。也许有人做过或看到过类似的事情,也许会分享一些见解。在

下面是一个Colander模式的示例:

class PageSchema(colander.MappingSchema):
    title = SchemaNode(String(),
                       title='Page title',
                       description='The title of the page',
                       )
    description  = SchemaNode(String(),
                              title='A short description', 
                              description='Keep it under 60 characters or so',
                              missing = u'',
                              validator=colander.Length(max=79)
                              )
    body = colander.SchemaNode(colander.String(),
                               description='Tell the world',
                               missing = u'')

Tags: the数据库示例stringtitle配置文件google模式
3条回答

滤器不支持这一点。在这个领域,我所知道的一件事是“limone”套餐,它的作用正好相反。它能够从colander模式生成任意python对象。在

正如micheal所说,它可能不受支持。如果你真的需要的话。这里有一些提示。在

按名称将架构保存在数据库中,例如:“PageSchema”。将它的所有记录与所有需要的参数一起保存在数据库中。在

你必须做这样的事情:

for row in rows:
    attrinbutes[row['name']] = build_attribute(row)

schemas[schema_name] = type(schema_name, (colander.MappingSchema,), attributes)
exec('%s = schemas[schema_name]' % schema_name)

换句话说,它加载所有属性并使用类型运算符构建一个类。这种任务非常简单,应该和习惯的class语法一样好用。exec调用只是在本地推送名称。您可以使用locals()[schema_name] = schmea或甚至其他作用域。在

这样,如果需要,可以从任何地方加载模式。你可以自己建一个工厂,比如:

  • schemas.get('PageSchema')如果可能,它将返回一个模式,如果不存在则返回一个模式。在

差不多了!在

ColanderAlchemy可以满足您的需要。它接受SQLAlchemy对象并从中生成Colander模式。然而,从SQLAlchemy对象生成并不完全是“从数据库”。在

相关问题 更多 >