PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

sqlalchemy erstellt VIEW mit ORM

Die Bibliothek sqlalchemy-utils enthält jetzt Funktionen zum Erstellen von Ansichten und verknüpft die Ansicht mit den Metadaten von sqlalchemy, sodass es möglich ist, die Ansicht mit Base.metadata.create_all zu erstellen

Beispiel:

# installation: pip install sqlalchemy-utils
from sqlalchemy_utils import create_view
from sqlalchemy import select, func

# engine Base & Table declaration elided for brevity

stmt = select([
    TableB.id.label('table_b_id'),
    TableB.coupon_code,
    TableB.number_of_rebought_items,
    TableA.id.label('table_a_action_id'),
    TableA.time,
    TableA.parameters
]).select_from(TableB.__table__.outerjoin(TableA, TableB.generate_action == TableA.id))

# attaches the view to the metadata using the select statement
view = create_view('my_view', stmt, Base.metadata)

# provides an ORM interface to the view
class MyView(Base):
    __table__ = view

# will create all tables & views defined with ``create_view``
Base.metadata.create_all()

# At this point running the following yields 0, as expected,
# indicating that the view has been constructed on the server 
engine.execute(select([func.count('*')], from_obj=MyView)).scalar()