[Checkins] SVN: zope.sqlalchemy/branches/sqlalchemy-0.5-support/s
make compatible with 0.4 and 0.5
Laurence Rowe
l at lrowe.co.uk
Thu Jun 19 16:53:42 EDT 2008
Log message for revision 87564:
make compatible with 0.4 and 0.5
Changed:
U zope.sqlalchemy/branches/sqlalchemy-0.5-support/setup.py
U zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/README.txt
U zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/datamanager.py
U zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/tests.py
-=-
Modified: zope.sqlalchemy/branches/sqlalchemy-0.5-support/setup.py
===================================================================
--- zope.sqlalchemy/branches/sqlalchemy-0.5-support/setup.py 2008-06-19 19:38:50 UTC (rev 87563)
+++ zope.sqlalchemy/branches/sqlalchemy-0.5-support/setup.py 2008-06-19 20:53:26 UTC (rev 87564)
@@ -41,7 +41,7 @@
install_requires=[
# -*- Extra requirements: -*-
'setuptools',
- 'SQLAlchemy>=0.5.0beta1',
+ 'SQLAlchemy>=0.4.6',
'transaction',
'zope.interface',
],
Modified: zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/README.txt
===================================================================
--- zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/README.txt 2008-06-19 19:38:50 UTC (rev 87563)
+++ zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/README.txt 2008-06-19 20:53:26 UTC (rev 87564)
@@ -67,9 +67,19 @@
scoped sessions. Zope and SQLAlchemy sessions are tied together by using the
ZopeTransactionExtension from this package.
- >>> Session = scoped_session(sessionmaker(bind=engine, twophase=TEST_TWOPHASE,
- ... autocommit=False, autoflush=True, extension=ZopeTransactionExtension()))
+ >>> if SA_0_5:
+ ... Session = scoped_session(sessionmaker(bind=engine,
+ ... twophase=TEST_TWOPHASE, extension=ZopeTransactionExtension()))
+The exact arguments depend on the version. Under SQLAlchemy 0.4 we must also
+supply transactional=True (equivalent to autocommit=False, which is default
+under 0.5).
+
+ >>> if SA_0_4:
+ ... Session = scoped_session(sessionmaker(bind=engine,
+ ... twophase=TEST_TWOPHASE, extension=ZopeTransactionExtension(),
+ ... transactional=True, autoflush=True,))
+
Call the scoped session factory to retrieve a session. You may call this as
many times as you like within a transaction and you will always retrieve the
same session. At present there are no users in the database.
Modified: zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/datamanager.py
===================================================================
--- zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/datamanager.py 2008-06-19 19:38:50 UTC (rev 87563)
+++ zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/datamanager.py 2008-06-19 20:53:26 UTC (rev 87564)
@@ -43,11 +43,7 @@
implements(ISavepointDataManager)
def __init__(self, session, status):
- if not session.autocommit:
- self.tx = session.transaction._iterate_parents()[-1]
- else:
- assert session.transaction is None
- self.tx = session.begin()
+ self.tx = session.transaction._iterate_parents()[-1]
self.session = session
_SESSION_STATE[id(session)] = status
self.state = 'init'
Modified: zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/tests.py
===================================================================
--- zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/tests.py 2008-06-19 19:38:50 UTC (rev 87563)
+++ zope.sqlalchemy/branches/sqlalchemy-0.5-support/src/zope/sqlalchemy/tests.py 2008-06-19 20:53:26 UTC (rev 87564)
@@ -36,7 +36,10 @@
TEST_TWOPHASE = bool(os.environ.get('TEST_TWOPHASE'))
TEST_DSN = os.environ.get('TEST_DSN', 'sqlite:///:memory:')
+SA_0_4 = sa.__version__.split('.')[:2] == ['0', '4']
+SA_0_5 = not SA_0_4
+
class SimpleModel(object):
def __init__(self, **kw):
for k, v in kw.items():
@@ -51,20 +54,31 @@
engine = sa.create_engine(TEST_DSN)
engine2 = sa.create_engine(TEST_DSN)
-Session = orm.scoped_session(orm.sessionmaker(
- bind=engine,
- extension=tx.ZopeTransactionExtension(),
- autocommit=False,
- autoflush=True,
- twophase=TEST_TWOPHASE,
- ))
+if SA_0_4:
+ Session = orm.scoped_session(orm.sessionmaker(
+ bind=engine,
+ extension=tx.ZopeTransactionExtension(),
+ transactional=True,
+ autoflush=True,
+ twophase=TEST_TWOPHASE,
+ ))
+ UnboundSession = orm.scoped_session(orm.sessionmaker(
+ extension=tx.ZopeTransactionExtension(),
+ transactional=True,
+ autoflush=True,
+ twophase=TEST_TWOPHASE,
+ ))
-UnboundSession = orm.scoped_session(orm.sessionmaker(
- extension=tx.ZopeTransactionExtension(),
- autocommit=False,
- autoflush=True,
- twophase=TEST_TWOPHASE,
- ))
+if SA_0_5:
+ Session = orm.scoped_session(orm.sessionmaker(
+ bind=engine,
+ extension=tx.ZopeTransactionExtension(),
+ twophase=TEST_TWOPHASE,
+ ))
+ UnboundSession = orm.scoped_session(orm.sessionmaker(
+ extension=tx.ZopeTransactionExtension(),
+ twophase=TEST_TWOPHASE,
+ ))
metadata = sa.MetaData() # best to use unbound metadata
@@ -403,5 +417,5 @@
for cls in (ZopeSQLAlchemyTests, MultipleEngineTests):
suite.addTest(makeSuite(cls))
suite.addTest(doctest.DocFileSuite('README.txt', optionflags=optionflags, tearDown=tearDownReadMe,
- globs={'TEST_DSN': TEST_DSN, 'TEST_TWOPHASE': TEST_TWOPHASE}))
+ globs={'TEST_DSN': TEST_DSN, 'TEST_TWOPHASE': TEST_TWOPHASE, 'SA_0_4': SA_0_4, 'SA_0_5': SA_0_5}))
return suite
More information about the Checkins
mailing list