如何解决在 Schema
Sqlalchemy 和 marshmallow 的新手。我正在尝试为两个连接的表创建一个架构,而另一个表没有嵌套。但我似乎不太正确。
这是模型
from sqlalchemy import BigInteger,Date,Float,Time
from sqlalchemy import DateTime,Column,Integer,and_
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from marshmallow_sqlalchemy import SQLAlchemySchema,auto_field,fields
from flask_marshmallow import Marshmallow
ma = Marshmallow()
Base = declarative_base()
Base.query = db_session.query_property()
class A(Base):
__tablename__ = 'a'
__table_args__ = (
UniqueConstraint('datetime','time_code'))
id = Column(BigInteger,primary_key=True,index=True)
datetime = Column(DateTime,index=True)
code = Column(BigInteger,index=True)
start = Column(Time)
end = Column(Time)
price_a= Column(Float)
price_c= Column(Float)
alpha = relationship(
B,foreign_keys=[B.datetime,B.code],primaryjoin=and_(
B.datetime == datetime,B.code == code))
class B(Base):
__tablename__ = 'b'
__table_args__ = (
UniqueConstraint('datetime',index=True)
start = Column(Time)
end = Column(Time)
price_b= Column(Float)
这是架构
class ASchema(SQLAlchemySchema):
class Meta:
model = A
price_a = auto_field()
price_c = auto_field()
class BSchema(SQLAlchemySchema):
class Meta:
ordered = True
model = B
datetime = auto_field()
code = auto_field()
start = auto_field()
price_b=auto_field()
alpha = fields.Nested(ASchema(many=True))
查询
def get(start_date,end_date):
b_schema = ImbalanceSchema(many=True)
values = BSchema.query.filter(BSchema.datetime.between(
start_date,end_date)).order_by(BSchema.datetime).all()
b_schema.dump(values)
return {'status': 200,'name': 'prices','data': values}
我在哪里运行查询:
{"status": 200,"name": "prices","data": [{"datetime": "2021-01-09T00:00:00","code": 1,"start": "00:00:00","price_b": 134.2,"alpha": [{"price_a": 122.0,"price_c": 110.88},.......]}
但是我想要的是这个:
{"status": 200,"price_a": 122.0,.......]}
我尝试使用 Plunk 但仍然没有得到任何结果。 我可以使用循环来展平它,但表格太长,循环可能会增加运行时间。 任何可以帮助我实现目标的方法将不胜感激
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。