首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将JSON类型与Flask-sqlalchemy和Postgresql结合使用

将JSON类型与Flask-sqlalchemy和Postgresql结合使用
EN

Stack Overflow用户
提问于 2014-05-27 05:39:49
回答 1查看 35K关注 0票数 29

背景:我正在构建一个Flask应用程序,我已经将我的数据存储到一个PostgreSQL列类型的数据库中。

任务:在我的视图函数中,我希望根据JSON列中的{Key:Value}对数据库查询进行排序

完成了:我已经成功地在psql命令行执行了这个查询,例如使用以下命令:

select * from target where cast(product->>'profit‘as float) > 100 order by cast(product->>'salesrank’as integer) asc;

问题:我无法在我的代码中复制此查询(请参阅下面额外信息部分中的模型代码)

代码语言:javascript
复制
from app import app, db
from models import Target 

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

收到错误-- ProgrammingError:(ProgrammingError)无法识别类型json第2行的排序运算符: FROM target ORDER BY target.product -> 'salesrank‘^提示:请使用显式排序运算符或修改查询。‘'SELECT target.id AS target_id,target.store AS target_store,target.product AS target_product,target.asin AS target_asin,target.date AS target_date \n nFROM ORDER BY target.product -> %(product_1)s \n LIMIT %(param_1)s’{'product_1':'salesrank','param_1':1}

额外信息我的目标模型是这样设置的:

代码语言:javascript
复制
#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())

我的App.py文件,其中定义了Flask和Sqlalchemy

代码语言:javascript
复制
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)

感谢您能提供的任何帮助!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23878070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档