If I do this:

from sqlalchemy import *
from StringIO import StringIO
buf = StringIO()
pg_engine = create_engine('sqlite://', strategy='mock',
executor=lambda s,p=';': buf.write(s.__str__() + p))
buf.truncate(0)
tables = [x[1] for x in sorted(db.metadata.tables.items(), key=lambda
x: x[0])]
for table in tables:
    table.create(pg_engine)
print buf.getvalue()

ok, it prints,

but if I change engine to 'postgres://'
then sqlalchemy print error:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call
last)


     59 tables = [x[1] for x in sorted(db.metadata.tables.items(),
key=lambda x: x[0])]
     60 for table in tables:
---> 61     table.create(pg_engine)
     62 print buf.getvalue()
     63

/usr/lib/python2.7/site-packages/sqlalchemy/schema.pyc in create(self,
bind, checkfirst)
    525         bind._run_visitor(ddl.SchemaGenerator,
    526                             self,
--> 527                             checkfirst=checkfirst)
    528
    529

/usr/lib/python2.7/site-packages/sqlalchemy/engine/strategies.pyc in
_run_visitor(self, visitorcallable, element, connection, **kwargs)
    247             kwargs['checkfirst'] = False
    248             visitorcallable(self.dialect, self,
--> 249                                 **kwargs).traverse(element)
    250
    251         def execute(self, object, *multiparams, **params):

/usr/lib/python2.7/site-packages/sqlalchemy/sql/visitors.pyc in
traverse(self, obj)
     94         """traverse and visit the given expression
structure."""
     95
---> 96         return traverse(obj, self.__traverse_options__,
self._visitor_dict)
     97
     98     @util.memoized_property

/usr/lib/python2.7/site-packages/sqlalchemy/sql/visitors.pyc in
traverse(obj, opts, visitors)
    205     """traverse and visit the given expression structure using
the default iterator."""
    206
--> 207     return traverse_using(iterate(obj, opts), obj, visitors)
    208
    209 def traverse_depthfirst(obj, opts, visitors):

/usr/lib/python2.7/site-packages/sqlalchemy/sql/visitors.pyc in
traverse_using(iterator, obj, visitors)
    199         meth = visitors.get(target.__visit_name__, None)
    200         if meth:
--> 201             meth(target)
    202     return obj
    203

/usr/lib/python2.7/site-packages/sqlalchemy/engine/ddl.pyc in
visit_table(self, table, create_ok)
     74
     75         table.dispatch.before_create(table, self.connection,
---> 76
checkfirst=self.checkfirst)
     77
     78         for column in table.columns:

/usr/lib/python2.7/site-packages/sqlalchemy/event.pyc in
__call__(self, *args, **kw)
    272             fn(*args, **kw)
    273         for fn in self.listeners:
--> 274             fn(*args, **kw)
    275
    276     # I'm not entirely thrilled about the overhead here,

/usr/lib/python2.7/site-packages/sqlalchemy/schema.pyc in
adapt_listener(target, connection, **kw)
    484
    485         def adapt_listener(target, connection, **kw):
--> 486             listener(event_name, target, connection)
    487
    488         event.listen(self, "" + event_name.replace('-', '_'),
adapt_listener)

/usr/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.pyc in
__call__(self, *arg, **kw)
    279
    280     def __call__(self, *arg, **kw):
--> 281         return getattr(self.target, self.name)(*arg, **kw)
    282
    283 def class_hierarchy(cls):

/usr/lib/python2.7/site-packages/sqlalchemy/types.pyc in
_on_table_create(self, event, target, bind, **kw)
   1676         t = self.dialect_impl(bind.dialect)
   1677         if t.__class__ is not self.__class__ and isinstance(t,
SchemaType):
-> 1678             t._on_table_create(event, target, bind, **kw)
   1679
   1680     def _on_table_drop(self, event, target, bind, **kw):

/usr/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/
base.pyc in _on_table_create(self, event, target, bind, **kw)
    451
    452     def _on_table_create(self, event, target, bind, **kw):
--> 453         self.create(bind=bind, checkfirst=True)
    454
    455     def _on_metadata_create(self, event, target, bind, **kw):

/usr/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/
base.pyc in create(self, bind, checkfirst)
    439
    440         if not checkfirst or \
--> 441             not bind.dialect.has_type(bind, self.name,
schema=self.schema):
    442             bind.execute(CreateEnumType(self))
    443

/usr/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/
base.pyc in has_type(self, connection, type_name, schema)
   1037                 """
   1038         cursor = connection.execute(sql.text(query,
bindparams=bindparams))
-> 1039         return bool(cursor.scalar())
   1040
   1041     def _get_server_version_info(self, connection):

AttributeError: 'NoneType' object has no attribute 'scalar'





-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@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