summaryrefslogtreecommitdiff
path: root/examples/custom_attributes/custom_management.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/custom_attributes/custom_management.py')
-rw-r--r--examples/custom_attributes/custom_management.py65
1 files changed, 41 insertions, 24 deletions
diff --git a/examples/custom_attributes/custom_management.py b/examples/custom_attributes/custom_management.py
index 2199e0138..812385906 100644
--- a/examples/custom_attributes/custom_management.py
+++ b/examples/custom_attributes/custom_management.py
@@ -9,31 +9,44 @@ descriptors with a user-defined system.
"""
-from sqlalchemy import create_engine, MetaData, Table, Column, Integer, Text,\
- ForeignKey
+from sqlalchemy import (
+ create_engine,
+ MetaData,
+ Table,
+ Column,
+ Integer,
+ Text,
+ ForeignKey,
+)
from sqlalchemy.orm import mapper, relationship, Session
-from sqlalchemy.orm.attributes import set_attribute, get_attribute, \
- del_attribute
+from sqlalchemy.orm.attributes import (
+ set_attribute,
+ get_attribute,
+ del_attribute,
+)
from sqlalchemy.orm.instrumentation import is_instrumented
from sqlalchemy.ext.instrumentation import InstrumentationManager
+
class MyClassState(InstrumentationManager):
def get_instance_dict(self, class_, instance):
return instance._goofy_dict
def initialize_instance_dict(self, class_, instance):
- instance.__dict__['_goofy_dict'] = {}
+ instance.__dict__["_goofy_dict"] = {}
def install_state(self, class_, instance, state):
- instance.__dict__['_goofy_dict']['state'] = state
+ instance.__dict__["_goofy_dict"]["state"] = state
def state_getter(self, class_):
def find(instance):
- return instance.__dict__['_goofy_dict']['state']
+ return instance.__dict__["_goofy_dict"]["state"]
+
return find
+
class MyClass(object):
__sa_instrumentation_manager__ = MyClassState
@@ -63,17 +76,23 @@ class MyClass(object):
del self._goofy_dict[key]
-if __name__ == '__main__':
- engine = create_engine('sqlite://')
+if __name__ == "__main__":
+ engine = create_engine("sqlite://")
meta = MetaData()
- table1 = Table('table1', meta,
- Column('id', Integer, primary_key=True),
- Column('name', Text))
- table2 = Table('table2', meta,
- Column('id', Integer, primary_key=True),
- Column('name', Text),
- Column('t1id', Integer, ForeignKey('table1.id')))
+ table1 = Table(
+ "table1",
+ meta,
+ Column("id", Integer, primary_key=True),
+ Column("name", Text),
+ )
+ table2 = Table(
+ "table2",
+ meta,
+ Column("id", Integer, primary_key=True),
+ Column("name", Text),
+ Column("t1id", Integer, ForeignKey("table1.id")),
+ )
meta.create_all(engine)
class A(MyClass):
@@ -82,16 +101,14 @@ if __name__ == '__main__':
class B(MyClass):
pass
- mapper(A, table1, properties={
- 'bs': relationship(B)
- })
+ mapper(A, table1, properties={"bs": relationship(B)})
mapper(B, table2)
- a1 = A(name='a1', bs=[B(name='b1'), B(name='b2')])
+ a1 = A(name="a1", bs=[B(name="b1"), B(name="b2")])
- assert a1.name == 'a1'
- assert a1.bs[0].name == 'b1'
+ assert a1.name == "a1"
+ assert a1.bs[0].name == "b1"
sess = Session(engine)
sess.add(a1)
@@ -100,8 +117,8 @@ if __name__ == '__main__':
a1 = sess.query(A).get(a1.id)
- assert a1.name == 'a1'
- assert a1.bs[0].name == 'b1'
+ assert a1.name == "a1"
+ assert a1.bs[0].name == "b1"
a1.bs.remove(a1.bs[0])