As the title says, I'd like to filter a related table without joining the
table (I don't want to mess up my pagination). Is there a way to enforce
the from clause? My SQL is a bit rusty but I'm pretty sure its possible.
On SQLAlchemy==1.2.12:
from sqlalchemy.ext.declarative import declarative_base
import sqlalchemy as sa
Model = declarative_base()
class Person(Model):
__tablename__ = 'person'
id = sa.Column(sa.Integer, primary_key=True)
class Note(Model):
__tablename__ = 'note'
id = sa.Column(sa.Integer, primary_key=True)
person_id = sa.Column(sa.Integer, sa.ForeignKey('person.id'))
person = sa.orm.relationship('Person', backref='notes')
engine = sa.create_engine('sqlite://')
Model.metadata.create_all(engine)
session_cls = sa.orm.sessionmaker(bind=engine)
session = session_cls()
person_query = session.query(Person).filter(Person.id == Note.person_id,
Note.id == 1)
print(person_query)
"person_query" is:
SELECT person.id AS person_id
FROM person, note
WHERE person.id = note.person_id AND note.id = ?
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.