📄 assignmapper.py
字号:
import testenv; testenv.configure_for_tests()from sqlalchemy import *from sqlalchemy import exceptionsfrom sqlalchemy.orm import create_session, clear_mappers, relation, class_mapperfrom sqlalchemy.ext.assignmapper import assign_mapperfrom sqlalchemy.ext.sessioncontext import SessionContextfrom testlib import *class AssignMapperTest(TestBase): def setUpAll(self): global metadata, table, table2 metadata = MetaData(testing.db) table = Table('sometable', metadata, Column('id', Integer, primary_key=True), Column('data', String(30))) table2 = Table('someothertable', metadata, Column('id', Integer, primary_key=True), Column('someid', None, ForeignKey('sometable.id')) ) metadata.create_all() @testing.uses_deprecated('SessionContext', 'assign_mapper') def setUp(self): global SomeObject, SomeOtherObject, ctx class SomeObject(object):pass class SomeOtherObject(object):pass ctx = SessionContext(create_session) assign_mapper(ctx, SomeObject, table, properties={ 'options':relation(SomeOtherObject) }) assign_mapper(ctx, SomeOtherObject, table2) s = SomeObject() s.id = 1 s.data = 'hello' sso = SomeOtherObject() s.options.append(sso) ctx.current.flush() ctx.current.clear() def tearDownAll(self): metadata.drop_all() def tearDown(self): for table in metadata.table_iterator(reverse=True): table.delete().execute() clear_mappers() @testing.uses_deprecated('assign_mapper') def test_override_attributes(self): sso = SomeOtherObject.query().first() assert SomeObject.query.filter_by(id=1).one().options[0].id == sso.id s2 = SomeObject(someid=12) s3 = SomeOtherObject(someid=123, bogus=345) class ValidatedOtherObject(object):pass assign_mapper(ctx, ValidatedOtherObject, table2, validate=True) v1 = ValidatedOtherObject(someid=12) try: v2 = ValidatedOtherObject(someid=12, bogus=345) assert False except exceptions.ArgumentError: pass @testing.uses_deprecated('assign_mapper') def test_dont_clobber_methods(self): class MyClass(object): def expunge(self): return "an expunge !" assign_mapper(ctx, MyClass, table2) assert MyClass().expunge() == "an expunge !"if __name__ == '__main__': testenv.main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -