2

しばらくグーグルで検索しましたが、構成ファイルまたはデータベースから 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'')
4

3 に答える 3

1

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')可能な場合はスキーマを返し、存在しない場合は None を返します。

それだけです!

于 2012-07-05T11:24:25.517 に答える
0

これはザルではサポートされていません。この分野で私が知っていることの1つは、反対のことをする「リモーネ」パッケージです。ザルスキーマから任意のPythonオブジェクトを生成できます。

于 2011-10-17T20:08:15.020 に答える
0

ColanderAlchemyは、必要なことを行うことができます。SQLAlchemy オブジェクトを受け取り、それらから Colander スキーマを生成します。ただし、SQLAlchemy オブジェクトからの生成は、正確には「データベースから」ではありません。

于 2015-06-15T20:25:57.747 に答える