Python_Flask_簡易ブログシステム開発:データベース移行——Migrate
3138 ワード
Flask-Migrateを使用してデータベースの更新とアップグレードを完了し、Flask-MigrateプラグインはAlembicベースであり、AlembicはSQLAlchemyの著者によって開発されたデータ移行ツールです.
操作手順: Flask-Migrateプラグイン をインストール Flask Appセクションのコードを変更し、Migrate関連Command を追加初期化 マイグレーションウェアハウス の作成
まず
次に、初期化を完了する方法について説明します.
データベースの移行を維持する前に、initサブコマンドを使用して移行ライブラリを作成する必要があります.
このコマンドはmigrationsフォルダを作成し、すべての移行スクリプトが格納されます.移行スクリプトの作成
Alembicでは、データベースの移行作業は移行スクリプトによって完了します.このスクリプトにはupgrade()とdowngrade()という2つの関数があります.upgrade()関数はデータベースの変更を実施し、移行の一部であり、downgrade()関数は削除します.更新データベース
これにより、データベースの更新とアップグレードが完了します.
操作手順:
(venv) $ pip install Flask-Migrate
db = SQLAlchemy(app)
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
python manage.py db init
まず
flask-migrate
プラグインをインストールする必要があります(venv) $ pip install flask-migrate
次に、初期化を完了する方法について説明します.
manage.py
from flask.ext.migrate import Migrate, MigrateCommand
# ...
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)
データベースの移行を維持する前に、initサブコマンドを使用して移行ライブラリを作成する必要があります.
(venv) $ python manage.py db init
このコマンドはmigrationsフォルダを作成し、すべての移行スクリプトが格納されます.
Creating directory /home/adark0915/PycharmProjects/flasky/migrations ... done
Creating directory /home/adark0915/PycharmProjects/flasky/migrations/versions
... done
Generating /home/adark0915/PycharmProjects/flasky/migrations/README ... done
Generating /home/adark0915/PycharmProjects/flasky/migrations/script.py.mako ... done
Generating /home/adark0915/PycharmProjects/flasky/migrations/alembic.ini ... done
Generating /home/adark0915/PycharmProjects/flasky/migrations/env.pyc ... done
Generating /home/adark0915/PycharmProjects/flasky/migrations/env.py ... done
Please edit configuration/connection/logging settings in
'/home/adark0915/PycharmProjects/flasky/migrations/alembic.ini' before
proceeding.
(venv) $ python hello.py db migrate -m "initial migration"
Alembicでは、データベースの移行作業は移行スクリプトによって完了します.このスクリプトにはupgrade()とdowngrade()という2つの関数があります.upgrade()関数はデータベースの変更を実施し、移行の一部であり、downgrade()関数は削除します.
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added column 'users.default'
INFO [alembic.autogenerate.compare] Detected added column 'users.permissions'
INFO [alembic.autogenerate.compare] Detected added index 'ix_users_default' on '['default']'
Generating /home/adark0915/PycharmProjects/flasky/migrations/versions/d5ddba7501
2e_initial_migration.py ... done
(venv) $ python hello.py db upgrade
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> d5ddba75012e, initial migration
/home/adark0915/PycharmProjects/flasky/venv/local/lib/python2.7/site-packages/alembic/util/messaging.py:69: UserWarning: Skipping unsupported ALTER for creation of implicit constraint
warnings.warn(msg)
これにより、データベースの更新とアップグレードが完了します.