【发布时间】:2016-11-14 17:16:22
【问题描述】:
目前我无法弄清楚如何在 SQLalchemy 中执行正确的连接,我有两个表 User 和 Room每个房间都是由用户提交的,这就是为什么每个房间都有一个 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