forked from cosmicpython/code
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathorm.py
More file actions
41 lines (33 loc) · 1.22 KB
/
orm.py
File metadata and controls
41 lines (33 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from sqlalchemy import Table, MetaData, Column, Integer, String, ForeignKey, Date
from sqlalchemy.orm import mapper, relationship
import domain_model
# minimal mappings, just order and warehouse + their lines
metadata = MetaData()
order = Table(
'order', metadata,
Column('id', Integer, primary_key=True, autoincrement=True),
)
order_lines = Table(
'order_lines', metadata,
Column('order_id', ForeignKey('order.id'), primary_key=True),
Column('sku', String(255), primary_key=True),
Column('qty', Integer),
)
mapper(domain_model.Line, order_lines)
mapper(domain_model.Order, order, properties={
'lines': relationship(domain_model.Line, cascade="all, delete-orphan")
})
warehouse = Table(
'warehouse', metadata,
Column('id', Integer, primary_key=True, autoincrement=True),
)
warehouse_lines = Table(
'warehouse_lines', metadata,
Column('warehouse_id', ForeignKey('warehouse.id'), primary_key=True),
Column('sku', String(255), primary_key=True),
Column('qty', Integer),
)
warehouse_line_mapper = mapper(domain_model.Line, warehouse_lines, non_primary=True)
mapper(domain_model.Warehouse, warehouse, properties={
'lines': relationship(warehouse_line_mapper, cascade="all, delete-orphan")
})