管理python程序的db schema

本人是个Pythoner,曾经对ruby嗤之以鼻,但每种语言都有自己的擅长方向,不能一味的否定一门语言。在维护一个采用ruby on rails框架的项目过程中,发现rails很多优点,这些都可以借鉴到python程序中:

  1. db schema migration

  2. 远程部署到指定环境

本篇主要关注的是 db schema migration,在下一篇中将会介绍远程部署python程序
db migration主要使用rails和rake两个命令,下面的demo是运行在Mac OS上。

环境准备

  1. git clone https://github.com/flying-bir...

  2. cd python-db-schem; sudo gem install bundler

  3. bundle install

Create Table

生成db文件,相当于sql文件

命令:

    ./bin/rails generate migration CreateJobTable

输出:

    db/migrate文件夹下面生成 {timestamp}_create_job_table.rb
在上步生成的文件中,写入具体的sql内容

采用如下格式:

class CreateJobTable < ActiveRecord::Migration
  def change
    create_table :d_job do |t|
          t.string :name
          t.string :path
          t.string :team
          t.references :pipeline
          t.string :function
          t.text :url
          t.integer :exclude,default:0
    end
    add_foreign_key :d_job, :d_pipeline, column: :pipeline_id
  end
end

Apply SQL File

命令:

./bin/rake db:migrate

运行上面的命令之后,将会在本地的db中创建出一个d_job表。
使用mysql的show create table来查看d_job的具体信息:

mysql> show create table d_job \G
*************************** 1. row ***************************
       Table: d_job
Create Table: CREATE TABLE `d_job` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` text,
  `path` text,
  `team` text,
  `pipeline_id` int(11) DEFAULT NULL,
  `function` varchar(120) DEFAULT NULL,
  `exclude` int(11) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `pipeline_id` (`pipeline_id`),
  CONSTRAINT `d_job_ibfk_1` FOREIGN KEY (`pipeline_id`) REFERENCES `d_pipeline` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=186 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

Rollback

运行下面的命令之后,上一步的db命令将会回滚,即drop table d_job

./bin/rake db:rollback  STEP=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值