背景: 我正在构建一个Flask应用程序,我已将数据存储到postgresql数据库和JSON列类型中.
任务: 在我的视图函数中,我想从JSON列的{Key:Value}订购数据库查询
完成:我已成功通过使用以下命令在psql命令行执行此查询,例如:
select*from target where cast(product - >>'profit'as float)> 100 order by cast(product - >>'salesrank'as integer)asc;
问题:我无法在我的代码中复制此查询(请参阅下面的额外信息部分中的模型代码)
from app import app, db
from models import Target
data = Target.query.order_by(Target.product['salesrank'])
Run Code Online (Sandbox Code Playgroud)
收到错误 - ProgrammingError:(ProgrammingError)无法识别类型json的排序运算符LINE 2:FROM target ORDER BY target.product - >'salesrank'^ HINT:使用显式排序运算符或修改查询.'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 \nFROM target ORDER BY target.product - >%(product_1)s \n LIMIT% (param_1)s'{'product_1':'salesrank','param_1':1}
额外信息 我的目标模型设置如下:
#models.py
from app import db
from sqlalchemy.dialects.postgresql import JSON
import datetime …Run Code Online (Sandbox Code Playgroud) 运行任一命令时:
sudo serverless package or sudo serverless deploy
错误:错误:异常:回溯(最近一次调用):文件“/var/lang/lib/python3.6/shutil.py”,第 550 行,移动 os.rename(src, real_dst) OSError:[Errno 18 ] 无效的跨设备链接:'/tmp/pip-target-wqc5grcw/lib/python/setuptools' -> '/var/task/setuptools'
在处理上述异常的过程中,又发生了一个异常:
回溯(最近一次调用):文件“/var/lang/lib/python3.6/site-packages/pip/_internal/cli/base_command.py”,第 228 行,在 _main status = self.run(options, args ) 文件“/var/lang/lib/python3.6/site-packages/pip/_internal/cli/req_command.py”,第 182 行,在包装器 return func(self, options, args) 文件“/var/lang/ lib/python3.6/site-packages/pip/_internal/commands/install.py”,第 456 行,在运行 options.target_dir、target_temp_dir、options.upgrade 文件“/var/lang/lib/python3.6/site- package/pip/_internal/commands/install.py”,第 514 行,在 _handle_target_dir target_item_dir 文件“/var/lang/lib/python3.6/shutil.py”,第 561 行,在 move symlinks=True 中)文件“/var /lang/lib/python3.6/shutil.py”,第 321 行,在 copytree os.makedirs(dst) 文件“/var/lang/lib/python3.6/os.py”,第 220 行,在 makedirs mkdir(名称,模式)PermissionError:[Errno 13] 权限被拒绝:'/var/task/setuptools'
我创建了几个不同的项目,它们在本地工作,但在尝试部署或打包时,它们从未超出这个无效的交叉链接设备错误。
我有哪些选择?