1
1
from sqlalchemy import MetaData, Integer, String, ForeignKey
2
2
from sqlalchemy import util
3
from test.lib.schema import Table
4
from test.lib.schema import Column
5
from sqlalchemy.orm import attributes
6
from test.lib import fixtures
3
from sqlalchemy.testing.schema import Table
4
from sqlalchemy.testing.schema import Column
5
from sqlalchemy.orm import attributes, mapper, relationship, \
6
backref, configure_mappers
7
from sqlalchemy.testing import fixtures
53
def _setup_stock_mapping(cls):
54
Node, composite_pk_table, users, Keyword, items, Dingaling, \
55
order_items, item_keywords, Item, User, dingalings, \
56
Address, keywords, CompositePk, nodes, Order, orders, \
57
addresses = cls.classes.Node, \
58
cls.tables.composite_pk_table, cls.tables.users, \
59
cls.classes.Keyword, cls.tables.items, \
60
cls.classes.Dingaling, cls.tables.order_items, \
61
cls.tables.item_keywords, cls.classes.Item, \
62
cls.classes.User, cls.tables.dingalings, \
63
cls.classes.Address, cls.tables.keywords, \
64
cls.classes.CompositePk, cls.tables.nodes, \
65
cls.classes.Order, cls.tables.orders, cls.tables.addresses
67
mapper(User, users, properties={
68
'addresses':relationship(Address, backref='user', order_by=addresses.c.id),
69
'orders':relationship(Order, backref='user', order_by=orders.c.id), # o2m, m2o
71
mapper(Address, addresses, properties={
72
'dingaling':relationship(Dingaling, uselist=False, backref="address") #o2o
74
mapper(Dingaling, dingalings)
75
mapper(Order, orders, properties={
76
'items':relationship(Item, secondary=order_items, order_by=items.c.id), #m2m
77
'address':relationship(Address), # m2o
79
mapper(Item, items, properties={
80
'keywords':relationship(Keyword, secondary=item_keywords) #m2m
82
mapper(Keyword, keywords)
84
mapper(Node, nodes, properties={
85
'children':relationship(Node,
86
backref=backref('parent', remote_side=[nodes.c.id])
90
mapper(CompositePk, composite_pk_table)
52
95
def define_tables(cls, metadata):
53
96
Table('users', metadata,
54
97
Column('id', Integer, primary_key=True, test_needs_autoincrement=True),