mirror of
https://github.com/d3vyce/sqlalchemy-pgview.git
synced 2026-03-02 03:30:47 +01:00
Initial commit
This commit is contained in:
59
test.py
Normal file
59
test.py
Normal file
@@ -0,0 +1,59 @@
|
||||
from sqlalchemy import (
|
||||
Column,
|
||||
DateTime,
|
||||
ForeignKey,
|
||||
Integer,
|
||||
MetaData,
|
||||
Numeric,
|
||||
String,
|
||||
Table,
|
||||
create_engine,
|
||||
func,
|
||||
select,
|
||||
)
|
||||
|
||||
from sqlalchemy_pgview import MaterializedView, View
|
||||
|
||||
# Create engine and metadata
|
||||
engine = create_engine("postgresql://postgres:postgres@localhost/postgres")
|
||||
metadata = MetaData()
|
||||
|
||||
# Define some tables
|
||||
users = Table(
|
||||
"users",
|
||||
metadata,
|
||||
Column("id", Integer, primary_key=True),
|
||||
Column("name", String(100)),
|
||||
Column("email", String(100)),
|
||||
)
|
||||
|
||||
orders = Table(
|
||||
"orders",
|
||||
metadata,
|
||||
Column("id", Integer, primary_key=True),
|
||||
Column("user_id", Integer, ForeignKey("users.id")),
|
||||
Column("total", Numeric(10, 2)),
|
||||
Column("created_at", DateTime, server_default=func.now()),
|
||||
)
|
||||
|
||||
active_users = View(
|
||||
"active_users",
|
||||
select(users.c.id, users.c.name, users.c.email),
|
||||
metadata=metadata,
|
||||
)
|
||||
|
||||
monthly_sales = MaterializedView(
|
||||
"monthly_sales",
|
||||
select(
|
||||
func.date_trunc("month", orders.c.created_at).label("month"),
|
||||
func.count(orders.c.id).label("order_count"),
|
||||
func.sum(orders.c.total).label("revenue"),
|
||||
).group_by(func.date_trunc("month", orders.c.created_at)),
|
||||
with_data=True,
|
||||
metadata=metadata,
|
||||
)
|
||||
|
||||
# Create tables
|
||||
metadata.create_all(engine)
|
||||
|
||||
# metadata.drop_all(engine)
|
||||
Reference in New Issue
Block a user