source

Plask-sqlalchemy 및 Postgresql에서의 JSON 유형 사용

gigabyte 2023. 3. 5. 09:52
반응형

Plask-sqlalchemy 및 Postgresql에서의 JSON 유형 사용

배경:Flask App을 만들고 있는데 데이터를 postgresql 데이터베이스와 JSON 컬럼 타입에 저장했습니다.

작업: 뷰 함수에서 JSON 열에서 {Key:Value}별로 데이터베이스 쿼리를 주문하고 싶습니다.

완료:다음 명령어를 사용하여 psql 명령줄에서 이 쿼리를 정상적으로 실행하였습니다.

cast(product->'profit'as float') > cast(product->'salesrank'as 정수) asc에서 *를 선택합니다.

문제:내 코드로 이 쿼리를 복제할 수 없습니다(추가 정보 섹션의 아래 모델에 대한 코드 참조).

from app import app, db
from models import Target 

data = Target.query.order_by(Target.product['salesrank'])

오류 수신 - 프로그램 오류: (프로그램 프로그래밍 오류: (프로그램 프로그래밍 오류)에서 대상 주문자)에서 대상 주문자를 식별할 수 없습니다.- 아니, 아니에요! - 왜요?target.date AS target_date \nFROM target ORDER BY target.product -> %(product_1)s \n LIMIT %(param_1)s {'product_1': '판매순위', 'param_1': 1'

추가 정보 My Target 모델은 다음과 같이 설정되었습니다.

#models.py
from app import db
from sqlalchemy.dialects.postgresql import JSON
import datetime

class Target(db.Model):
    __tablename__ = 'target'

    id = db.Column(db.Integer)
    store = db.Column(db.String())
    product = db.Column(JSON)
    asin = db.Column(db.String(), primary_key=True)
    date = db.Column(db.DateTime, default=datetime.datetime.utcnow())

Plask와 Squalchemy를 정의하는 App.py 파일

from flask import Flask
import os
from flask.ext.sqlalchemy import SQLAlchemy
from flask_bootstrap import Bootstrap

app = Flask(__name__)
app.config.from_object(os.environ['APP_SETTINGS'])
db = SQLAlchemy(app)
Bootstrap(app)

import views
from app import app
from models import Result

if __name__ == '__main__':
    app.run(host='192.168.1.5', port=5000, debug=True)

도움을 주셔서 감사합니다!

JSON 데이터 유형의 SQL Chemy 문서를 보면.cast방법:

from sqlalchemy.types import Integer

from app import app, db
from models import Target 

# SQLAlchemy 1.1+
data = Target.query.order_by(Target.product['salesrank'].astext.cast(Integer))

# SQLAlchemy < 1
data = Target.query.order_by(Target.product['salesrank'].cast(Integer))

언급URL : https://stackoverflow.com/questions/23878070/using-json-type-with-flask-sqlalchemy-postgresql

반응형