데이터베이스 작업에는 데이터 검색이 포함되는 경우가 많으며 이러한 결과를 보다 편리한 형식으로 변환하는 것이 일반적입니다. 표시 또는 조작을 위한 JSON과 같은 형식입니다. 이 작업은 Django에 내장된 ORM 모델 직렬화를 사용하여 간단하게 수행할 수 있습니다. 그러나 Django의 ORM 없이 SQLAlchemy를 사용하면 다음과 같은 질문이 발생합니다.
SQLAlchemy 쿼리 결과를 JSON으로 직렬화하려면 어떻게 해야 하나요?
옵션 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: 사용자 정의 유형
또 다른 옵션은 직렬화할 데이터를 나타내기 위해 사용자 정의 UDT(사용자 정의 유형)를 정의하는 것입니다. PostgreSQL은 사용자 정의 유형을 지원하므로 JSON으로 직접 저장하고 검색할 수 있는 객체를 정의할 수 있습니다.
CREATE TYPE json_user AS (name text, data json);
또는 SQLAlchemy-UJSON 패키지를 사용하여 SQLAlchemy에서 JSON UDT 처리를 단순화할 수 있습니다.
SQLAlchemy 쿼리 결과를 JSON으로 직렬화하는 것은 일반적인 작업입니다. 다양한 실행 가능한 솔루션을 제공합니다. 적절한 접근 방식은 특정 요구 사항과 사용 중인 기본 데이터베이스 시스템에 따라 다릅니다. 올바른 옵션을 선택하면 원활한 데이터 교환을 달성하고 SQLAlchemy 결과를 처리하는 데 있어 유연성을 얻을 수 있습니다.
위 내용은 SQLAlchemy 쿼리 결과를 JSON으로 효과적으로 직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!