データベース操作にはデータの取得が頻繁に含まれ、これらの結果をより便利なデータに変換するのが一般的です。 JSON などの表示または操作用の形式。このタスクは、Django の組み込み ORM モデルのシリアル化を使用して簡単に行うことができます。ただし、Django の ORM なしで SQLAlchemy を使用する場合、次のような疑問が生じます:
SQLAlchemy クエリ結果を JSON にシリアル化するにはどうすればよいですか?
オプション 1: ユーザー辞書変換
1 つの方法は、SQLAlchemy オブジェクトを手動で辞書に変換し、標準の json.dumps() 関数を使用して JSON にシリアル化することです。これは、モデル クラス内でカスタム as_dict() メソッドを定義することで実現できます。
class User: def as_dict(self): return {c.name: getattr(self, c.name) for c in self.__table__.columns}
オブジェクトをシリアル化するには、単に User.as_dict() を呼び出します。
オプション 2 : SQLAlchemy-JSON
または、 SQLAlchemy-JSON パッケージ。SQLAlchemy オブジェクト専用に調整された JSONEncoder を提供することでシリアル化プロセスを簡素化します。パッケージをインストールし、JSON_SQLALCHEMY 環境変数を true に設定すると、SQLAlchemy オブジェクトを JSON 文字列としてシリアル化できるようになります:
from sqlalchemy import JSON from sqlalchemy.orm import declarative_base Base = declarative_base() class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) name = Column(String(50)) data = Column(JSON) # Assume data is a JSON object # Enable SQLAlchemy-JSON serialization import os os.environ["JSON_SQLALCHEMY"] = "true"
オプション 3: ユーザー定義型
もう 1 つのオプションは、シリアル化するデータを表すカスタム ユーザー定義型 (UDT) を定義することです。 PostgreSQL はカスタム タイプをサポートしているため、JSON として直接保存および取得できるオブジェクトを定義できます。
CREATE TYPE json_user AS (name text, data json);
あるいは、SQLAlchemy-UJSON パッケージを使用して、SQLAlchemy での JSON UDT の処理を簡素化できます。
SQLAlchemy クエリ結果を JSON にシリアル化するこれは、複数の実行可能なソリューションがある一般的なタスクです。適切なアプローチは、特定の要件と使用されている基礎となるデータベース システムによって異なります。適切なオプションを選択することで、シームレスなデータ交換を実現し、SQLAlchemy の結果を柔軟に処理できるようになります。
以上がSQLAlchemy クエリ結果を JSON に効果的にシリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。