V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
hustlzp
V2EX  ›  Python

大家都在用什么数据库 migrate 工具?

  •  
  •   hustlzp ·
    hustlzp · 2014-07-07 09:11:43 +08:00 · 6073 次点击
    这是一个创建于 3793 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家都在用什么数据库 migrate 工具呢?

    一直在用Flask-Migrate,是对alembic的简单封装,然后提供了一些Flask-Script命令。

    但感觉alembic不太好用:

    1. 它默认使用随机数来命名文件,这样不容易看出时间的先后顺序(当然,改一下配置文件应该就可以实现用时间命名...)。

    2. migrate脚本之间的先后顺序是定义在文件中的down_version的,多个人在不同分支中对同一个节点进行migrate,完了merge的时候又要手动修改down_version,好麻烦...

    3. 单个脚本的执行不具有原子性,如果执行某个脚本的时候中途失败,之前执行的也不会rollback,挺麻烦的。

    感觉没有RoR中自带的migrate工具方便。

    alembic的开发者就是SQLAlchemy的作者Mike Bayer,从 https://bitbucket.org/zzzeek/alembic 来看,commits还是比较频繁的。听说下一版会有比较大的提升,希望如此吧~
    6 条回复    2014-07-08 10:40:17 +08:00
    nine
        1
    nine  
       2014-07-07 09:57:30 +08:00   ❤️ 1
    转rails 妥妥的~
    hellojinjie
        2
    hellojinjie  
       2014-07-07 10:21:16 +08:00   ❤️ 1
    广告广告!!!

    遇到这个帖子,赶紧贴个广告 https://github.com/hellojinjie/dbmigrate 求 star

    史上最好用的 Database Migration Tool 自产自销,欢迎试用。

    1. 我不用随机数命名文件!! 我用时间戳!!!

    2. 这个不太明白,down_version 是什么意思? 我的工具中文件名是时间戳,时间戳就是顺序

    3. rollback 这个太复杂啦,DDL语句是隐式commit,MyISAM 表又是不支持事务的。如果不采用数据库自带的事务功能的话,需要维护一个 up 脚本和一个 down脚本,(up 脚本用来 apply 数据库更改,down用来撤销数据库更改),但是在实际的使用过程中根!本!就没有人会去维护down 脚本,所以简单起见,仅保留up脚本。

    jj@hellojinjie report :) $ tree
    .
    ├── configure.xml
    ├── configure.xml-template
    ├── dbmigrate.bat
    ├── dbmigrate.jar
    ├── dbmigrate.sh
    ├── log4j.properties
    ├── migrations
    │   ├── m000000_000000_base.sql
    │   ├── m140409_135940_add_charset_to_temporary_table.sql
    │   ├── m140415_180101_insert_data_to_report_table.sql
    │   ├── m140418_101256_add_network_type_to_user_view.sql
    │   ├── m140508_095947_repopulate_dim_geo_city.sql
    │   ├── m140519_180940_add_popular_into_monitor.sql
    │   ├── m140529_150622_change_duration_to_bigint.sql
    │   ├── m140604_173900_add_table_recover_date.sql
    │   └── m140630_133200_add_user_view_csv_report.sql
    ├── mysql.exe
    └── README.txt

    1 directory, 17 files
    no13bus
        3
    no13bus  
       2014-07-07 10:29:23 +08:00   ❤️ 1
    django的新版本1.7里面自带的迁移工具不错。
    hustlzp
        4
    hustlzp  
    OP
       2014-07-07 11:42:46 +08:00
    @hellojinjie 赞一个!down_version就是表示某个migrate文件的上一个节点。这是alembic的设计。
    hustlzp
        5
    hustlzp  
    OP
       2014-07-07 11:43:53 +08:00
    @no13bus 恩。最近很少用Django了。
    P9
        6
    P9  
       2014-07-08 10:40:17 +08:00
    south 挺赞,不过是django的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1279 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:30 · PVG 01:30 · LAX 09:30 · JFK 12:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.