問題タブ [marshmallow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python Marshmallow の兄弟フィールドから逆シリアル化されたデータにアクセスしますか?
次の Python クラスと Marshmallow スキーマ定義があります。
サンプルがうまく説明しているように、書籍オブジェクトに (著者 ID だけでなく) 著者への参照が含まれているが、著者 ID にシリアル化されるデータ モデルが必要です。
明らかに、シリアル化は問題ではありませんが、逆シリアル化するときは、著者リストの既に逆シリアル化された内容にアクセスする必要があります。マシュマロでそれを行う方法がよくわかりません。それは可能ですか?もちろん、この場合、Book
オブジェクトを数値の作成者 ID でインスタンス化し、@post_load
操作を実行しLibrarySchema
て作成者 ID を参照に置き換えることはできますが、それは私には汚くて扱いにくいと感じます。助けてください。:-)
marshmallow - オプションのフィールド検証の処理
単純な問題があり、それを処理する最善の方法がわかりません。次のように定義されたスキーマがあります。
imageUrl
はオプションのフィールドで、None/null の場合もあります。これが発生した場合は問題ありません。有効な URL である必要はありません。しかし、私がするとき:
PUT された着信データでは、url フィールドにエラーが記録されます。Field may not be null.
load の呼び出しで使用するとうまくいくと思いpartial=True
ましたが、うまくいきません。これは部分的ではなく、完全なオブジェクトであるため、私もそれが好きではありませんでした.DBでフィールドの一部がnull可能になっているだけです。
imageUrl が null でない場合はマシュマロを検証し、null の場合は無視するにはどうすればよいですか?
python-2.7 - sqlalchemy marshmallow を使用して Geography 列の型をシリアル化するのが難しい
Marshmallow を使用して SQLAlchemy オブジェクトの逆シリアル化とシリアル化を実行しようとしていますが、ORM で地理フィールドを処理するときに問題が発生します。
まずモデル:
次に、マシュマロ スキーマ:
次に、実行しようとしたときのエラー:
場所フィールドでいくつかのオーバーライドを試みましたが、役に立ちませんでした。どんな助けでも大歓迎です。
2016 年 1 月 24 日更新
これは、より単純なモデルを使用した瞬間としての私のコードです。
SQLAlchemyModel:
marshmallow_sqlalchemy スキーマ オブジェクト
提案による他の配管:
コードの実行中:
私が得る結果は次のとおりです。
python - ネストされたサブクラスでの Python マシュマロ サイクルの問題
依存関係のサイクル/三角形を形成するネストされたフィールドを持つ 3 つのマシュマロ スキーマがあります。two-way nestingのボイラープレートを使用すれば、問題はないようです。
ただし、次のような fields.Nested の独自の薄いサブクラスがあります。
Nested
そして、ネイティブ型の代わりに NestedRelationship を使用するように各スキーマを変更すると、次のようになります。
NestedRelationship は比較的薄いサブクラスであり、動作の違いに驚いています。ここで何か間違ったことをしていますか?スーパーを適切に呼び出していませんか?
python - マシュマロの循環インポート
互いに関連する 2 つのオブジェクトがあります。関連する属性を介して、あるオブジェクトから別のオブジェクトにアクセスできるようにしたいと考えています。
例えばA.b_relationship.obj.some_property
循環インポートを作成せずにこれを行うにはどうすればよいですか?
わかりやすくするために、この追加の例を追加しました。明らかに、SQLAlchemy はこの問題をbackref
属性で解決しました。この種のものをマシュマロに実装することが、その動作を壊すことなく実行できるかどうかはわかりません。考え方を変える必要があるのではないでしょうか?
python - Marshmallow を使用したシリアル化の最適化、その他のソリューション
これは簡単なように思えますが、残念ながら:
次の SQLAlchemy クエリ オブジェクトがあります。
[{'sid': 1}, {'sid': 2},...] のように出力をシリアライズしたい場合
これを行うために、次の単純なマシュマロ スキーマを使用しようとしています。
しかし、私がするとき
私は得る:
私の出力のために。
ただし、クエリから 1 行だけを選択すると、たとえば、
望ましい結果が得られます。
.all() を使用したクエリがデータを返していることは知っています。これを印刷すると、タプルのリストが得られるためです。
マシュマロはタプルのリストを処理できると想定しています。なぜなら、serialize メソッドの下の marshaling.py のドキュメントでは、「生データ (dict、リスト、またはその他のオブジェクト) と dict を取得する...」と書かれているからです。 、これは、タプルのリストが「リスト」または「その他のオブジェクト」のいずれかに分類される可能性があると考えるのは間違った仮定である可能性があります。
それ以外の場合はマシュマロが好きで、次のような反復メソッドを使用して SQLAlchemy 出力をシリアル化するよりも最適化として使用することを望んでいました。
これは、大規模なレコード セットの場合、処理に時間がかかる場合があります。
編集
Marshmallow が SQLAlchemy による出力としてレコード セット全体をシリアル化できたとしても、データを反復処理しすぎているように見えるため、速度が向上するかどうかはわかりません。
Clinicalのクラス定義を変更する以外に、SQLAlchemy出力の最適化されたシリアライゼーションに関する提案はありますか?
python - マシュマロを使用してオブジェクトをシリアル化するときに、いくつかの親オブジェクト フィールドをネストする方法
私はマシュマロを使用して、次のようなフラットな構造を持つ sqlalchemy オブジェクトをシリアル化しています。
シリアル化するとき、マシュマロが関連するアドレス フィールドを次のようにグループ化するようにします。
@post_dump を使わずにマシュマロにこれをさせる方法はありますか? Nested() を使用して他のスキーマをネストできることはわかっていますが、この場合、親スキーマ自体から特定の列をネストしたいだけです。
python - マシュマロsql-alchemyオブジェクトを使用している間はDBセッション追加マシュマロオブジェクトを避ける
マシュマロを使用しているときにデータをセッションに挿入しないようにする方法はありますか - sqlalchemy
sqlalchemy marshmallow はセッションへのロードを回避します
参照: https://marshmallow-sqlalchemy.readthedocs.org/en/latest/
オブジェクトを自分で管理しようとしたためです。必要に応じてセッションに追加しますが、検証のために使用する必要がありますload()
この問題を回避するための回避策は、負荷を試した後、DB を呼び出しSession.close()
て一時データを無視することです。しかし、ここでもセッションを取得してデータを DB にフラッシュする必要があります。
ご意見をお聞かせください。ご協力いただきありがとうございます