なんか書くぞ

web系だと思う

alembicでテーブルができるまで

はい、pythonの話です

まあこれ読めばできるんですけどね Tutorial — Alembic 0.9.3 documentation

プロジェクトのルートで作業するのがやりやすかった

$ alembic init alembic

alembic氏のディレクトリが生える

コマンド打ったディレクトリに alembic.ini ファイルができる

そういえば今回は単一のDBのお話なので、複数のDBを管理したい時はまた別。

複数DB扱うときはこちら↓が参考になるかと思います(試してないので断定してない)

qiita.com

alembic.iniね

# ここ編集するぞ 
# あとDBはあらかじめ作っておく 
sqlalchemy.url = driver://user:pass@localhost/dbname 

$ alembic revision -m "initial create table"

これでスキーマ定義用のファイルが alembic/versions/ 以下にできる

できたやつ.py

Revision ID: {Revision ID}
Revises: 戻す時のやつ
Create Date: 2017-06-12 23:12:13.187440

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '{Revision ID}'
down_revision = '{戻す時のやつ}'
branch_labels = None
depends_on = None


def upgrade():
    op.create_table(
        "user",
        sa.Column("id", sa.Integer, primary_key=True),
        sa.Column("name", sa.String({max_length}), unique=True),
        sa.Column("email", sa.String({max_length}), unique=True),
        sa.Column("password", sa.String({max_length}), unique=True),
        sa.Column("mtime", sa.TIMESTAMP),
        sa.Column("ctime", sa.DateTime, default=sa.func.now())
    )

def downgrade():
    op.drop_table('user')

djangoっぽくuser.pyとかを作ってそこにmodelの定義書いて〜とか考えてたけどできるのかな、知らんけど、うーん。

で、これができたら $ alembic upgrade head ってやるとなんかテーブルできてる。