Great, thank you! I thought that I can use a field of relationship() - “invited_by" in User model for emitting the similar query, but I'm getting an empty list.
> On Mar 20, 2019, at 12:55 AM, Mike Bayer <mike...@zzzcomputing.com> wrote: > > On Tue, Mar 19, 2019 at 10:23 AM kosta <naumo...@gmail.com > <mailto:naumo...@gmail.com>> wrote: >> >> Hello Mike, >> Thank you for your response! >> >> >> First of all, I'm apologize, I have lack knowledge in sql. I guess my SQL >> should be as: >> Get all users invited by specific user: >> >> SELECT u.name AS "sender", i.name AS "invitee" >> FROM invitation inv >> LEFT JOIN user u ON inv.sender_id=u.id >> LEFT JOIN user i ON inv.invitee_id=i.id >> WHERE inv.sender_id=?; >> >> Get user who invited specific user: >> >> SELECT u.name AS "invited_by", i.name AS "invitee" >> FROM invitation inv >> LEFT JOIN user u ON inv.sender_id=u.id >> LEFT JOIN user i ON inv.invitee_id=i.id >> WHERE inv.invitee_id=?; > > here's the form of the first one and the second is basically the same idea: > > from sqlalchemy.orm import aliased > > u = aliased(User, "u") > i = aliased(User, "i") > > q = session.query( > u.name.label("sender"), > i.name.label("invitee") > ).select_from(Invitation).\ > outerjoin(u, Invitation.sender).\ > outerjoin(i, Invitation.invitee).\ > filter(Invitation.sender_id=5) > >> >> >> понедельник, 18 марта 2019 г., 17:48:26 UTC+3 пользователь Mike Bayer >> написал: >>> >>> On Sat, Mar 16, 2019 at 9:33 AM kosta <naum...@gmail.com> wrote: >>>> >>>> Hello everyone! >>>> >>>> I've designed invitation model >>>> class User(Base): >>>> __tablename__ = 'user' >>>> >>>> id = Column(Integer, primary_key=True) >>>> name = Column(String(64)) >>>> email = Column(String(64)) >>>> class Invitation(Base): >>>> __tablename__ = 'invitation' >>>> >>>> id = Column(Integer, primary_key=True) >>>> sender_id = Column(Integer, ForeignKey('user.id')) >>>> invitee_id = Column(Integer, ForeignKey('user.id'), unique=True) >>>> sender = relationship('User', foreign_keys=[sender_id], >>>> backref='invite_list') >>>> invitee = relationship('User', foreign_keys=[invitee_id], >>>> backref='invited_by', uselist=False) >>>> >>>> email = Column(String) >>>> phone = Column(String) >>>> token = Column(String) >>>> >>>> My logic is: >>>> >>>> 1. Create a new record in Invitation table: sender_id - current user, >>>> email or phone and unique generated token. >>>> 2. Create a new record in User table keep received token, commit it. >>>> 3. Find a record in Invitation table by filter token and update filed >>>> invitee_id == new_user.id >>>> >>>> >>>> My problem is backref return value for invited_by - return (of course) >>>> Invitation record. >>>> My question is whether I've possibility return for invited_by User record >>>> via Invitation table or not? >>> >>> you can find any record via anything, what SQL would you like to emit >>> please ? >>> >>> >>> >>>> >>>> >>>> -- >>>> SQLAlchemy - >>>> The Python SQL Toolkit and Object Relational Mapper >>>> >>>> http://www.sqlalchemy.org/ >>>> >>>> To post example code, please provide an MCVE: Minimal, Complete, and >>>> Verifiable Example. See http://stackoverflow.com/help/mcve for a full >>>> description. >>>> --- >>>> You received this message because you are subscribed to the Google Groups >>>> "sqlalchemy" group. >>>> To unsubscribe from this group and stop receiving emails from it, send an >>>> email to sqlalchemy+...@googlegroups.com. >>>> To post to this group, send email to sqlal...@googlegroups.com. >>>> Visit this group at https://groups.google.com/group/sqlalchemy. >>>> For more options, visit https://groups.google.com/d/optout. >> >> -- >> SQLAlchemy - >> The Python SQL Toolkit and Object Relational Mapper >> >> http://www.sqlalchemy.org/ >> >> To post example code, please provide an MCVE: Minimal, Complete, and >> Verifiable Example. See http://stackoverflow.com/help/mcve for a full >> description. >> --- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sqlalchemy+unsubscr...@googlegroups.com >> <mailto:sqlalchemy+unsubscr...@googlegroups.com>. >> To post to this group, send email to sqlalchemy@googlegroups.com >> <mailto:sqlalchemy@googlegroups.com>. >> Visit this group at https://groups.google.com/group/sqlalchemy >> <https://groups.google.com/group/sqlalchemy>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ <http://www.sqlalchemy.org/> > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve > <http://stackoverflow.com/help/mcve> for a full description. > --- > You received this message because you are subscribed to a topic in the Google > Groups "sqlalchemy" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sqlalchemy/gv8QmGnl6lg/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.