【发布时间】:2021-08-07 12:26:22
【问题描述】:
我对 SQLAlchemy 有点陌生,并且在 db 中使用 JSON 列。
我的数据库模型
from sqlalchemy.dialects.postgresql import JSON
class Traydetails(db.Model):
id= db.Column(db.Integer, autoincrement=True, primary_key=True)
traynumber = db.Column(db.String, unique=True)
safety_data = db.Column(JSON)
我的 JSON 结构
[{"Formulation": "Form1", "Hazard Rating": "Class B"}, {"Formulation": "Form2", "Hazard Rating": "Class B"}, {"Formulation": "Form3", "Hazard Rating": "Class B"}, {"Formulation": "Form4", "Hazard Rating": "Class B"}, {"Formulation": "Form5", "Hazard Rating": "Class B"}, {"Formulation": "Form6", "Hazard Rating": "Class B"}, {"Formulation": "Form7", "Hazard Rating": "Class B"}, {"Formulation": "Form8", "Hazard Rating": "Class B"}, {"Formulation": "Form9", "Hazard Rating": "Class B"}, {"Formulation": "Form10", "Hazard Rating": "Class B"}]
试过查询1
hazard = Traydetails.query.filter(Traydetails.safety_data['Hazard Rating'].astext == "Class B").count()
它什么也不返回。
试过查询2
hazard = Traydetails.query.filter(Traydetails.safety_data[0]['Hazard Rating'].astext.cast(Unicode) == "Class B").count()
它只返回一个(因为我是在比较一个位置)
但我的目标是计算危险等级(关键)中有多少 B 级。 请注意,会有不同类型的类,例如 Class A 、 Class B 、 Class N。
【问题讨论】:
标签: python json postgresql sqlalchemy