Even better, what would it take to try using Alembic? 
(http://alembic.readthedocs.org/en/latest/front.html#project-homepage)

It's a big improvement over sqlalchemy.  Amongst other things, migrations are 
not numbered, they are linked by dependancy, and run in topological-sort order. 
That there eliminates alot of "my migration number got taken... again..." 
problems. 
On Apr 27, 2012, at 10:47 AM, Dan Prince wrote:

> 
> 
> ----- Original Message -----
>> From: "Sean Dague" <sda...@linux.vnet.ibm.com>
>> To: openstack@lists.launchpad.net
>> Sent: Friday, April 27, 2012 10:21:17 AM
>> Subject: Re: [Openstack] database migration cleanup
>> 
>> On 04/26/2012 03:24 PM, Dan Prince wrote:
>> <snip>
>>> I think this scheme would support users who follow stable releases
>>> as well as users who follow trunk very closely.
>>> 
>>> We talked about this at the conference but I thought this issue
>>> might be near and dear to some of our end users so it was worth
>>> discussing on the list.
>>> 
>>> What are general thoughts on this approach?
>> 
>> Is there any support in sqlalchemy, or related tools, to handle
>> migrations the way rails does, where a schema file is created at the
>> end
>> of every migration? It would be ideal if we both had a full migration
>> history, as well as a short cut at any snap shot to get to the end.
> 
> Ah. Yes, the Rails schema.rb. I looked around for just this sort of thing and 
> didn't find much. Python-migrate has some "experimental" support for 
> generating models and I did make use of that initially. See 'create_model' 
> below:
> 
> 
> [root@nova1 migrate_repo]# python ./manage.py --repository=./ 
> --url=mysql://nova:password@localhost/nova
> Usage: manage.py COMMAND ...
> 
>    Available commands:
>        compare_model_to_db          - compare MetaData against the current 
> database state
>       create                       - create an empty repository at the 
> specified path
>       create_model                 - dump the current database as a Python 
> model to stdout
>       db_version                   - show the current version of the 
> repository under version control
>       downgrade                    - downgrade a database to an earlier 
> version
>       drop_version_control         - removes version control from a database
>       help                         - displays help on a given command
>       make_update_script_for_model - create a script changing the old 
> MetaData to the new (current) MetaData
>       manage                       - creates a Python script that runs 
> Migrate with a set of default values
>       script                       - create an empty change Python script
>       script_sql                   - create empty change SQL scripts for 
> given database
>       source                       - display the Python code for a particular 
> version in this repository
>       test                         - performs the upgrade and downgrade 
> command on the given database
>       update_db_from_model         - modify the database to match the 
> structure of the current MetaData
>       upgrade                      - upgrade a database to a later version
>       version                      - display the latest version available in 
> a repository
>       version_control              - mark a database as under this 
> repository's version control
> 
> ----
> 
> python-migrate's 'create_model' does not however give you something that 
> exactly matches the schema you'd get by running the all the migrations. So 
> auto generation doesn't appear to be an option right now. It would be nice to 
> contribute python-migrate in this regard and get better support for model 
> generation, etc. Maybe a good long term goal?
> 
> Dan
> 
> 
>> 
>>      -Sean
>> 
>> --
>> Sean Dague
>> IBM Linux Technology Center
>> email: slda...@us.ibm.com
>> alt-email: sda...@linux.vnet.ibm.com
>> 
>> 
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openstack
>> Post to     : openstack@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~openstack
>> More help   : https://help.launchpad.net/ListHelp
>> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp

--
        Monsyne M. Dragon
        OpenStack/Nova 
        cell 210-441-0965
        work x 5014190


_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to