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
'source' 카테고리의 다른 글
AngularJs 복잡한 데이터를 지침으로 전달 (0) | 2023.03.05 |
---|---|
차단된 발신지 간 요청:같은 오리진 정책에 따라 다음 위치에서 원격 리소스를 읽을 수 없습니다. (0) | 2023.03.05 |
python의 pretty-print json(비음파적 방법) (0) | 2023.03.05 |
ORA-12505, TNS: 리스너가 현재 접속 기술자에 지정된SID를 인식하지 않음 (0) | 2023.03.05 |
SQL*Plus를 사용하여 Oracle 11g에서 데이터베이스를 표시하는 방법 (0) | 2023.03.05 |