📄 sessions.py
字号:
import testenv; testenv.configure_for_tests()from sqlalchemy import *from sqlalchemy.orm import *from testlib import *from testlib import fixturesimport gc# in this test we are specifically looking for time spent in the attributes.InstanceState.__cleanup() method.ITERATIONS = 100class SessionTest(TestBase, AssertsExecutionResults): def setUpAll(self): global t1, t2, metadata,T1, T2 metadata = MetaData(testing.db) t1 = Table('t1', metadata, Column('c1', Integer, primary_key=True), Column('c2', String(30))) t2 = Table('t2', metadata, Column('c1', Integer, primary_key=True), Column('c2', String(30)), Column('t1id', Integer, ForeignKey('t1.c1')) ) metadata.create_all() l = [] for x in range(1,51): l.append({'c2':'this is t1 #%d' % x}) t1.insert().execute(*l) for x in range(1, 51): l = [] for y in range(1, 100): l.append({'c2':'this is t2 #%d' % y, 't1id':x}) t2.insert().execute(*l) class T1(fixtures.Base): pass class T2(fixtures.Base): pass mapper(T1, t1, properties={ 't2s':relation(T2, backref='t1') }) mapper(T2, t2) def tearDownAll(self): metadata.drop_all() clear_mappers() @profiling.profiled('clean', report=True) def test_session_clean(self): for x in range(0, ITERATIONS): sess = create_session() t1s = sess.query(T1).filter(T1.c1.between(15, 48)).all() for index in [2, 7, 12, 15, 18, 20]: t1s[index].t2s sess.close() del sess gc.collect() @profiling.profiled('dirty', report=True) def test_session_dirty(self): for x in range(0, ITERATIONS): sess = create_session() t1s = sess.query(T1).filter(T1.c1.between(15, 48)).all() for index in [2, 7, 12, 15, 18, 20]: t1s[index].c2 = 'this is some modified text' for t2 in t1s[index].t2s: t2.c2 = 'this is some modified text' del t1s gc.collect() sess.close() del sess gc.collect() @profiling.profiled('noclose', report=True) def test_session_noclose(self): for x in range(0, ITERATIONS): sess = create_session() t1s = sess.query(T1).filter(T1.c1.between(15, 48)).all() for index in [2, 7, 12, 15, 18, 20]: t1s[index].t2s del sess gc.collect() if __name__ == '__main__': testenv.main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -