本人是個Pythoner,曾經對ruby嗤之以鼻,但每種語言都有本身的擅長方向,不能一味的否認一門語言。在維護一個採用ruby on rails框架的項目過程當中,發現rails不少優勢,這些均可以借鑑到python程序中:python
db schema migrationmysql
遠程部署到指定環境git
本篇主要關注的是 db schema migration,在下一篇中將會介紹遠程部署python程序。
db migration主要使用rails和rake兩個命令,下面的demo是運行在Mac OS上。github
git clone https://github.com/flying-bir...sql
cd python-db-schem; sudo gem install bundlersegmentfault
bundle installruby
命令:框架
./bin/rails generate migration CreateJobTable
輸出:url
db/migrate文件夾下面生成 {timestamp}_create_job_table.rb
採用以下格式:code
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
命令:
./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)
運行下面的命令以後,上一步的db命令將會回滾,即drop table d_job
./bin/rake db:rollback STEP=1