[Checkins] SVN: zope.sqlalchemy/trunk/src/zope/sqlalchemy/README.txt fix tabs in doctest

Laurence Rowe l at lrowe.co.uk
Mon May 5 15:29:54 EDT 2008


Log message for revision 86465:
  fix tabs in doctest

Changed:
  U   zope.sqlalchemy/trunk/src/zope/sqlalchemy/README.txt

-=-
Modified: zope.sqlalchemy/trunk/src/zope/sqlalchemy/README.txt
===================================================================
--- zope.sqlalchemy/trunk/src/zope/sqlalchemy/README.txt	2008-05-05 19:24:56 UTC (rev 86464)
+++ zope.sqlalchemy/trunk/src/zope/sqlalchemy/README.txt	2008-05-05 19:29:54 UTC (rev 86465)
@@ -37,84 +37,84 @@
 This example is lifted directly from the SQLAlchemy declarative documentation.
 First the necessary imports.
 
-	>>> from sqlalchemy import *
-	>>> from sqlalchemy.ext.declarative import declarative_base
-	>>> from sqlalchemy.orm import scoped_session, sessionmaker, relation
-	>>> from zope.sqlalchemy import ZopeTransactionExtension, invalidate
-	>>> import transaction
+    >>> from sqlalchemy import *
+    >>> from sqlalchemy.ext.declarative import declarative_base
+    >>> from sqlalchemy.orm import scoped_session, sessionmaker, relation
+    >>> from zope.sqlalchemy import ZopeTransactionExtension, invalidate
+    >>> import transaction
 
 Now to define the mapper classes.
 
-	>>> Base = declarative_base()
-	>>> class User(Base):
-	...     __tablename__ = 'test_users'
-	...     id = Column('id', Integer, primary_key=True)
-	...     name = Column('name', String(50))
-	...     addresses = relation("Address", backref="user")
-	>>> class Address(Base):
-	...     __tablename__ = 'test_addresses'
-	...     id = Column('id', Integer, primary_key=True)
-	...     email = Column('email', String(50))
-	...     user_id = Column('user_id', Integer, ForeignKey('test_users.id'))
+    >>> Base = declarative_base()
+    >>> class User(Base):
+    ...     __tablename__ = 'test_users'
+    ...     id = Column('id', Integer, primary_key=True)
+    ...     name = Column('name', String(50))
+    ...     addresses = relation("Address", backref="user")
+    >>> class Address(Base):
+    ...     __tablename__ = 'test_addresses'
+    ...     id = Column('id', Integer, primary_key=True)
+    ...     email = Column('email', String(50))
+    ...     user_id = Column('user_id', Integer, ForeignKey('test_users.id'))
 
 Create an engine and setup the tables. Note that for this example to work a 
 recent version of sqlite/pysqlite is required. 3.4.0 seems to be sufficient.
 
-	>>> engine = create_engine(TEST_DSN, convert_unicode=True)
-	>>> Base.metadata.create_all(engine)
+    >>> engine = create_engine(TEST_DSN, convert_unicode=True)
+    >>> Base.metadata.create_all(engine)
 
 Now to create the session itself. As zope is a threaded web server we must use
 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,
-	... transactional=True, autoflush=True, extension=ZopeTransactionExtension()))
+    >>> Session = scoped_session(sessionmaker(bind=engine, twophase=TEST_TWOPHASE,
+    ... transactional=True, autoflush=True, extension=ZopeTransactionExtension()))
 
 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.
 
-	>>> session = Session()
-	>>> session.query(User).all()
-	[]
+    >>> session = Session()
+    >>> session.query(User).all()
+    []
 
 We can now create a new user and commit the changes using Zope's transaction
 machinary, just as Zope's publisher would.
 
-	>>> session.save(User(name='bob'))
-	>>> transaction.commit()
+    >>> session.save(User(name='bob'))
+    >>> transaction.commit()
 
 Engine level connections are outside the scope of the transaction integration.
 
-	>>> engine.connect().execute('SELECT * FROM test_users').fetchall()
-	[(1, ...'bob')]
+    >>> engine.connect().execute('SELECT * FROM test_users').fetchall()
+    [(1, ...'bob')]
 
 A new transaction requires a new session. Let's add an address.
 
-	>>> session = Session()
-	>>> bob = session.query(User).all()[0]
-	>>> bob.name
-	u'bob'
-	>>> bob.addresses
-	[]
-	>>> bob.addresses.append(Address(email='bob at bob.bob'))
-	>>> transaction.commit()
-	>>> session = Session()
-	>>> bob = session.query(User).all()[0]
-	>>> bob.addresses
-	[<Address object at ...>]
-	>>> bob.addresses[0].email
-	u'bob at bob.bob'
-	>>> bob.addresses[0].email = 'wrong at wrong'    
+    >>> session = Session()
+    >>> bob = session.query(User).all()[0]
+    >>> bob.name
+    u'bob'
+    >>> bob.addresses
+    []
+    >>> bob.addresses.append(Address(email='bob at bob.bob'))
+    >>> transaction.commit()
+    >>> session = Session()
+    >>> bob = session.query(User).all()[0]
+    >>> bob.addresses
+    [<Address object at ...>]
+    >>> bob.addresses[0].email
+    u'bob at bob.bob'
+    >>> bob.addresses[0].email = 'wrong at wrong'    
 
 To rollback a transaction, use transaction.abort().
 
-	>>> transaction.abort()
-	>>> session = Session()
-	>>> bob = session.query(User).all()[0]
-	>>> bob.addresses[0].email
-	u'bob at bob.bob'
-	>>> transaction.abort()
+    >>> transaction.abort()
+    >>> session = Session()
+    >>> bob = session.query(User).all()[0]
+    >>> bob.addresses[0].email
+    u'bob at bob.bob'
+    >>> transaction.abort()
 
 By default, zope.sqlalchemy puts sessions in an 'active' state when they are
 first used. ORM write operations automatically move the session into an
@@ -124,30 +124,30 @@
 must manually mark the session as invalidated when manual SQL statements write
 to the DB.
 
-	>>> session = Session()
-	>>> conn = session.connection()
-	>>> users = Base.metadata.tables['test_users']
-	>>> conn.execute(users.update(users.c.name=='bob'), name='ben')
-	<sqlalchemy.engine.base.ResultProxy object at ...>
-	>>> from zope.sqlalchemy import invalidate
-	>>> invalidate(session)
-	>>> transaction.commit()
-	>>> session = Session()
-	>>> session.query(User).all()[0].name
-	u'ben'
-	>>> transaction.abort()
+    >>> session = Session()
+    >>> conn = session.connection()
+    >>> users = Base.metadata.tables['test_users']
+    >>> conn.execute(users.update(users.c.name=='bob'), name='ben')
+    <sqlalchemy.engine.base.ResultProxy object at ...>
+    >>> from zope.sqlalchemy import invalidate
+    >>> invalidate(session)
+    >>> transaction.commit()
+    >>> session = Session()
+    >>> session.query(User).all()[0].name
+    u'ben'
+    >>> transaction.abort()
 
 If this is a problem you may tell the extension to place the session in the
 'invalidated' state initially.
 
     >>> Session.configure(extension=ZopeTransactionExtension('invalidated'))
     >>> Session.remove()
-	>>> session = Session()
-	>>> conn = session.connection()
-	>>> conn.execute(users.update(users.c.name=='ben'), name='bob')
-	<sqlalchemy.engine.base.ResultProxy object at ...>
-	>>> transaction.commit()
-	>>> session = Session()
-	>>> session.query(User).all()[0].name
-	u'bob'
-	>>> transaction.abort()
+    >>> session = Session()
+    >>> conn = session.connection()
+    >>> conn.execute(users.update(users.c.name=='ben'), name='bob')
+    <sqlalchemy.engine.base.ResultProxy object at ...>
+    >>> transaction.commit()
+    >>> session = Session()
+    >>> session.query(User).all()[0].name
+    u'bob'
+    >>> transaction.abort()



More information about the Checkins mailing list