Ok, i just realize that create_all is useless when database already exist. Starting my application is 6 seconds faster now.
Thanks all 2009/10/1 limodou <[email protected]> > > On Thu, Oct 1, 2009 at 6:25 PM, Christian Démolis > <[email protected]> wrote: > > Thx Simon, > > > > I tried Base.metadata.create_all(engine, checkfirst=False) > > but it throws an error. > > When checkfirst is True, the declaration works. > > I don t understand... > > > > Maybe orm needs additional information in declarative classes when > > checkfirst=False because orm doesn t look in database in this case? > > > > These is the error : > > > > Z:\>python Declaration.py > > Le temps de chargement des modules SQL ALCHEMY 0.25 > > Le temps de dÚclaration SQL ALCHEMY 0.156000137329 > > Traceback (most recent call last): > > File "Declaration.py", line 1435, in <module> > > Base.metadata.create_all(engine, checkfirst=False) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\sche > > ma.py", line 1796, in create_all > > bind.create(self, checkfirst=checkfirst, tables=tables) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\engi > > ne\base.py", line 1129, in create > > self._run_visitor(self.dialect.schemagenerator, entity, > > connection=connectio > > n, **kwargs) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\engi > > ne\base.py", line 1158, in _run_visitor > > visitorcallable(self.dialect, conn, **kwargs).traverse(element) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\sql\ > > visitors.py", line 89, in traverse > > return traverse(obj, self.__traverse_options__, self._visitor_dict) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\sql\ > > visitors.py", line 200, in traverse > > return traverse_using(iterate(obj, opts), obj, visitors) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\sql\ > > visitors.py", line 194, in traverse_using > > meth(target) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\sql\ > > compiler.py", line 831, in visit_metadata > > self.traverse_single(table) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\sql\ > > visitors.py", line 79, in traverse_single > > return meth(obj) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\sql\ > > compiler.py", line 870, in visit_table > > self.execute() > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\engi > > ne\base.py", line 1812, in execute > > return self.connection.execute(self.buffer.getvalue()) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\engi > > ne\base.py", line 824, in execute > > return Connection.executors[c](self, object, multiparams, params) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\engi > > ne\base.py", line 888, in _execute_text > > return self.__execute_context(context) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\engi > > ne\base.py", line 896, in __execute_context > > self._cursor_execute(context.cursor, context.statement, > > context.parameters[0 > > ], context=context) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\engi > > ne\base.py", line 950, in _cursor_execute > > self._handle_dbapi_exception(e, statement, parameters, cursor, > context) > > File > > "c:\python25\lib\site-packages\SQLAlchemy-0.5.6-py2.5.egg\sqlalchemy\engi > > ne\base.py", line 931, in _handle_dbapi_exception > > raise exc.DBAPIError.instance(statement, parameters, e, > > connection_invalidat > > ed=is_disconnect) > > sqlalchemy.exc.ProgrammingError: (ProgrammingError) (1064, "Erreur de > > syntaxe pr > > \xe8s de ' \n\tcp VARCHAR, \n\tlatitude VARCHAR, \n\tlongitude VARCHAR, > > \n\teloi > > gn' \xe0 la ligne 3") '\nCREATE TABLE maps_ville (\n\t`IdVille` INTEGER > NOT > > NULL > > AUTO_INCREMENT, \n\tnom VARCHAR, \n\tcp VARCHAR, \n\tlatitude VARCHAR, > > \n\tlong > > itude VARCHAR, \n\teloignement VARCHAR, \n\turl VARCHAR, \n\tPRIMARY KEY > > (`IdVil > > le`)\n)\n\n' () > > > > > > It seems that there is no length for VARCHAR, the right syntax should > be VARCHAR(length), and I also need this problem when I testing in > Mysql, but there is no problem in Sqlite. > > > -- > I like python! > UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/ > UliWeb <<simple web framework>>: http://uliwebproject.appspot.com > My Blog: http://hi.baidu.com/limodou > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
