Sur la base des informations fournies je geussing que vous souhaitez effectuer une union (https://www.w3schools.com/sql/sql_union.asp) sur les différentes tables.
Dans l'exemple ci-dessous, les différentes tables sont créées, une union de ces différentes tables est réalisée.
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from datetime import datetime
Base = declarative_base()
class Human(Base):
__tablename__ = 'human'
id = Column('id', Integer, primary_key=True)
created = Column('created', DateTime)
name = Column('name', String(250))
def __init__(self, created, name):
self.created = created
self.name = name
def __repr__(self):
return '<{created} - {name}>'.format(created=self.created, name=self.name)
class Car(Base):
__tablename__ = 'car'
id = Column('id', Integer, primary_key=True)
created = Column('created', DateTime)
brand = Column(String(250))
def __init__(self, created, brand):
self.created = created
self.brand = brand
def __repr__(self):
return '<{created} - {brand}>'.format(created=self.created, brand=self.brand)
class Tree(Base):
__tablename__ = 'tree'
id = Column('id', Integer, primary_key=True)
created = Column('created', DateTime)
type = Column(String(250))
def __init__(self, created, type):
self.created = created
self.type = type
def __repr__(self):
return '<{created} - {type}>'.format(created=self.created, type=self.type)
engine = create_engine('sqlite:///')
session = sessionmaker()
session.configure(bind=engine)
ex_ses = session()
Base.metadata.create_all(engine)
human = Human(datetime.now(), 'Human a')
human2 = Human(datetime.now(), 'Human b')
car = Car(datetime.now(), 'Car a')
car2 = Car(datetime.now(), 'Car b')
tree = Tree(datetime.now(), 'Tree a')
tree2 = Tree(datetime.now(), 'Tree b')
ex_ses.add(human)
ex_ses.add(human2)
ex_ses.add(car)
ex_ses.add(car2)
ex_ses.add(tree)
ex_ses.add(tree2)
ex_ses.commit()
# Query
h = ex_ses.query(Human.created, 'name')
c = ex_ses.query(Car.created, 'brand')
t = ex_ses.query(Tree.created, 'type')
print(h.union_all(c).union_all(t).all())
La requête finale (dans l'instruction d'impression) retourne:
[(datetime.datetime(2017, 7, 5, 5, 55, 54, 633863), 'Human a'),
(datetime.datetime(2017, 7, 5, 5, 55, 54, 633863), 'Human b'),
(datetime.datetime(2017, 7, 5, 5, 55, 54, 633863), 'Car a'),
(datetime.datetime(2017, 7, 5, 5, 55, 54, 633863), 'Car b'),
(datetime.datetime(2017, 7, 5, 5, 55, 54, 633863), 'Tree a'),
(datetime.datetime(2017, 7, 5, 5, 55, 54, 633863), 'Tree b')]
Cette réponse est basée sur: How to union across multiple tables in SQLAlchemy?
Comment écririez-vous le SQL? – univerio