【问题标题】:Flask SQLalchemy order_by value joined from two Tables从两个表连接的烧瓶 SQLalchemy order_by 值
【发布时间】:2016-11-14 17:16:22
【问题描述】:

目前我无法弄清楚如何在 SQLalchemy 中执行正确的连接,我有两个表 UserRoom每个房间都是由用户提交的,这就是为什么每个房间都有一个 users_id 作为 foreign key .

用户有一个属性has_payed

我想要的是查询某个城市的所有房间(工作正常),然后按User.has_payed 值对这些结果进行排序。它首先会显示属于has_payed == True的用户的所有房间。

我目前在做什么:

Room.query.join(Room.users_id).order_by(User.has_payed)

那是我的桌子:

class User(UserMixin, Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(Text, nullable=False, unique=True)
    password = Column(Text, nullable=False)
    has_payed = Column(Boolean, default=False)
    vorname = Column(Text, nullable=True)
    nachname = Column(Text, nullable=True)
    email_verified = Column(Boolean, default=False)
    handynummer = Column(Text, nullable=True)
    email = Column(Text, unique=True)
    # foreign key
    addresses = relationship('Room', back_populates="users")



class Room(Base):
    __tablename__ = 'zimmer'
    id = Column(Integer, primary_key=True)
    art = Column(Text, nullable=False)
    personen = Column(Integer, nullable=False)
    preis = Column(Integer, nullable=False)
    infofeld = Column(Text, nullable=False)
    land = Column(Text, nullable=False)
    bundesland = Column(Text, nullable=False)
    stadt = Column(Text, nullable=False)
    plz = Column(Text, nullable=False)
    strasse = Column(Text, nullable=False)
    hausnr = Column(Text, nullable=True)
    zimmer_lat = Column(Float, nullable=False)
    zimmer_lng = Column(Float, nullable=False)

    # foreign key
    users_id = Column(Integer, ForeignKey('users.id'))
    users = relationship("User", back_populates="addresses")

【问题讨论】:

  • has_played 是一个布尔字段。你不能在这个文件中使用 order_by..
  • 你可以使用这个查询 - Room.query.join(Room.users_id).filter(User.has_payed==True)
  • 它通过一个布尔值按顺序工作

标签: python python-2.7 flask sqlalchemy


【解决方案1】:

这似乎解决了这个问题,但我不知道它是如何知道它必须加入Room.users_id == User.id

Room.query.join(User).order_by(desc(User.has_payed))

【讨论】:

  • 你可以使用joinload
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 2021-01-24
相关资源
最近更新 更多