On Oct 18, 2010, at 12:41 PM, Russell Warren wrote:

> 
> #sess2 will add a new user (jack), but we'll roll it back in the end
> sess2 = Session()
> jack = User('jack')
> jack.addresses = [Address(email_address='j...@example.com'),
>                  Address(email_address='j...@example.org')]
> sess2.add(jack)
> sess2.flush() #no commit

so above, issue #1, SQLite doesn't support foreign key constraints by default.  
 They are accepted syntactically, but do nothing.  Consult the sqlite 
documentation (SQLite itself, not SQLAlchemy) for information on a fairly 
recent feature that enables them to enforce the constraints.

> #sess3 will create an address linked to jack (before he gets rolled
> back)
> sess3 = Session()
> addr3 = Address("h...@hmm.com", jack_id) #but this id will be rolled
> back
> # adding to jack in another session succeeds even though jack is not
> commited...
> sess3.add(addr3)
> sess3.commit()
> 
> #Now rollback sess2, which should get rid of jack... but doesn't??
> sess2.rollback()
> 
> print Session().query(User).all()

issue #2, I've tried to emphasize this as much as possible in the 
documentation, the SQLite dialect uses *one connection* for the thread, by 
default.   This default is being changed in 0.7 (so in 0.7, the common issue 
will become "database is locked" issues, whereby I'll probably have to tell 
people to switch back to SingletonThreadPool....  ).

The "one connection per thread" default is discussed at the following locations:

http://www.sqlalchemy.org/docs/dialects/sqlite.html?highlight=sqlite#threading-behavior
http://www.sqlalchemy.org/docs/core/pooling.html?highlight=singleton#connection-pool-configuration
http://www.sqlalchemy.org/docs/core/pooling.html#sqlalchemy.pool.SingletonThreadPool

and exactly what you are doing is mentioned at:

http://www.sqlalchemy.org/trac/wiki/FAQ#IamusingmultipleconnectionswithaSQLitedatabasetypicallytotesttransactionoperationandmytestprogramisnotworking



-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to