我用谷歌搜索了一段时间,但我找不到如何从配置文件或数据库中检索漏勺模式的参考。我认为这并不难实现,但我可能忽视了一些事情。也许某人已经做过或看过类似的事情,并且可能会分享一些见解。
这是一个漏勺模式的示例:
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'')
答案 0 :(得分:1)
正如米歇尔所说,它可能不受支持。如果你真的需要它。这里有一些指示。
按名称将模式保存在数据库中,例如:“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')
如果不存在则返回None。 这就是它!
答案 1 :(得分:0)
滤锅不支持此功能。我在这方面知道的一件事就是“limone”包装,它恰恰相反。它能够从漏勺模式生成任意python对象。
答案 2 :(得分:0)
ColanderAlchemy可能会满足您的需求。它需要SQLAlchemy对象并从中生成Colander模式。但是,从SQLAlchemy对象生成并不完全是“来自数据库”。