On Sun, Apr 8, 2012 at 9:53 PM, Michael Bayer <mike...@zzzcomputing.com>wrote:

>
> On Apr 7, 2012, at 8:50 PM, limodou wrote:
>
> I've tested today, and I felt very good. And I have a question, if I've
> autogenerated once, and havn't upgrade to the database, so if I rerun the
> autogenerate again, it'll say:
>
> Target database is not up to date.
>
> So I want to know if there is an option so that it can delete the revision
> which havenot upgrade to database(maybe I can set the revision number), and
> recreate new rivision, for now, I can delete last revision by hand, and run
> the autogenerate again it'll be ok.
>
>
>
> yeah I've been deleting it by hand.   I guess a command "prune" or
> something like that ?  I'd make it prompt you before deleting the files
> though.   I'm not sure if i want to be in the business of erasing people's
> source code.
>
>
>
> And I want to know how to let alembic know other python web framework
> configuration when init. Or how to customize alembic init process?
>
>
> So the two integration paths are a. how to have the Alembic scripts know
> about your web framework when they run and b. how to have your web
> framework know about alembic when it runs.
>
> For a. we have the env.py script.   I do this a lot now in env.py:
>
> from myapplication.model import Session
>
> # ...
>
> def run_migrations_online():
>     s = Session()
>     if s.bind is not None:
>         engine = s.bind
>     else:
>        engine = engine_from_config(...)
>
>
> so above, if I'm running Alembic from inside a script that has already
> loaded up my web framework (like in tests), Alembic uses the same engine
> that the web framework has already set up.
>
> for b. that was part of the focus for 0.3, to get more public API for
> alembic.   I have an init() like this:
>
>
> def init_alembic(check_only):
>     from alembic.config import Config
>     from alembic.script import ScriptDirectory
>     from alembic.migration import MigrationContext
>     from alembic import command
>
>     config = Config()
>     config.set_main_option("script_location", "myapp:migrations")
>
>     if check_only:
>         # check that the DB is up to date only
>         script = ScriptDirectory.from_config(config)
>         conn = DBSession().connection()
>         ctx = MigrationContext.configure(conn)
>         head = script.get_current_head()
>         db_head = ctx.get_current_revision()
>         if db_head != head:
>             raise Exception("Current migration version %s "
>                     "does not match %s" % (db_head, head))
>     else:
>         # upgrade to head
>         command.upgrade(config, "head")
>
>
> so unit test fixtures that want to have a whole database available on a
> test node will run init_alembic() with False, the main app runner runs
> init_alembic() with True, so that the production app isn't trying to
> upgrade the database.
>
>
>
>
Thank you very much. I'll test it more.

-- 
I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/
UliWeb <<simple web framework>>: http://code.google.com/p/uliweb/
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 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