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.