ツタンラーメンの忘備録

プログラミングや精神疾患、ラーメンについて書いていきます。たぶん。

Flask SQLAlchemy alembicでtable、columnを作成したい。ついでにherokuにデプロイしたい

# sqlalchemy.url = driver://user:pass@localhost/dbname
sqlalchemy.url = sqlite:///test.db

alebmic.initを正しいパスに変更する。
当たり前であるがこれを忘れて死んでいた。

Tutorial — Alembic 0.9.6 documentation

じゃあ、これをデプロイしようとして意外とはまった
floder構成は


+alembic
 env.py
 +versions
  +???.py
app.py
config.py
alembic.ini

みたいな感じ

env.py

import app #app.pyから呼んでくる

#
#~そのまま~
#

def run_migrations_online():
    #下記を加える
    alembic_config = config.get_section(config.config_ini_section)
    alembic_config['sqlalchemy.url'] = app.app.config['SQLALCHEMY_DATABASE_URI']
    connectable = engine_from_config(
        alembic_config,
        prefix='sqlalchemy.',
        poolclass=pool.NullPool)
    #上記を加える
    
    '''
    #既存のコード
    connectable = engine_from_config(
        config.get_section(config.config_ini_section),
        prefix='sqlalchemy.',
        poolclass=pool.NullPool)
    '''

    with connectable.connect() as connection:
        context.configure(
            connection=connection,
            target_metadata=target_metadata
        )

        with context.begin_transaction():
            context.run_migrations()

stackoverflow.com
フォルダ構成が違うだけでこれが参考になる