Not sure if pickling of metadata is supported, but between 0.6.6 and
0.7b4 behavior has changed.
The following works under 0.6.6, breaks under 0.7b4 .  I've included
the error below.

########################
#!/usr/bin/env python
import pickle
import sqlalchemy
from sqlalchemy import *
from sqlalchemy.orm import *
cachefile='cache'
dbfile='database'
engine = create_engine('sqlite:///%s' % dbfile,echo=True)
metadata = MetaData(bind=engine)


Table('a',metadata,
      Column('id',Integer,primary_key=True),
      Column('x', Integer, Sequence("x_seq"), ),
      )
metadata.create_all()
with open(cachefile, 'w') as cache:
    pickle.dump(metadata, cache)


with open(cachefile, 'r') as cache:
    metadata2 = pickle.load(cache)
    metadata2.bind = engine
    Table('a',metadata2,
          Column('id',Integer,primary_key=True),
          Column('x', Integer, Sequence("x_seq"), ),
          useexisting=True)


###############


Here's the error:

Traceback (most recent call last):
  File "./picklebug.py", line 28, in <module>
    useexisting=True)
  File "/usr/local/lib/python2.7/site-packages/SQLAlchemy-0.7b4dev-
py2.7-linux-i686.egg/sqlalchemy/schema.py", line 213, in __new__
    table._init_existing(*args, **kw)
  File "/usr/local/lib/python2.7/site-packages/SQLAlchemy-0.7b4dev-
py2.7-linux-i686.egg/sqlalchemy/schema.py", line 318, in
_init_existing
    self._init_items(*args)
  File "/usr/local/lib/python2.7/site-packages/SQLAlchemy-0.7b4dev-
py2.7-linux-i686.egg/sqlalchemy/schema.py", line 62, in _init_items
    item._set_parent_with_dispatch(self)
  File "/usr/local/lib/python2.7/site-packages/SQLAlchemy-0.7b4dev-
py2.7-linux-i686.egg/sqlalchemy/events.py", line 228, in
_set_parent_with_dispatch
    self.dispatch.after_parent_attach(self, parent)
  File "/usr/local/lib/python2.7/site-packages/SQLAlchemy-0.7b4dev-
py2.7-linux-i686.egg/sqlalchemy/event.py", line 239, in __call__
    fn(*args, **kw)
  File "/usr/local/lib/python2.7/site-packages/SQLAlchemy-0.7b4dev-
py2.7-linux-i686.egg/sqlalchemy/schema.py", line 1519, in _set_table
    self._set_metadata(table.metadata)
  File "/usr/local/lib/python2.7/site-packages/SQLAlchemy-0.7b4dev-
py2.7-linux-i686.egg/sqlalchemy/schema.py", line 1523, in
_set_metadata
    self.metadata._sequences.add(self)
AttributeError: 'MetaData' object has no attribute '_sequences'

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

Reply via email to