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
-~----------~----~----~----~------~----~------~--~---

Reply via email to