Alembic: Difference between revisions
No edit summary |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Overview == | == Overview == | ||
SQLAlchemy based database migration tool alembic 내용 정리 | SQLAlchemy based database migration tool alembic 내용 정리 | ||
== Add revision == | |||
alembic revision 을 사용하면 새로운 변경사항을 추가할 수 있다. | |||
<pre> | |||
$ alembic -c config.ini revision -m "increse_reg_server_size" | |||
</pre> | |||
=== Example === | |||
<pre> | |||
$ alembic -c config.ini revision -m "increse_reg_server_size" | |||
Generating /home/pchero/gittmp/asterisk/contrib/ast-db-manage/config/versions/1ae0609b6646_increse_reg_server_size.py ... done | |||
</pre> | |||
== Example == | == Example == | ||
Line 21: | Line 33: | ||
├── script.py.mako | ├── script.py.mako | ||
└── versions | └── versions | ||
</source> | |||
== Upgrade == | |||
스크립트를 적용한다. upgrade() 에 정의된 작업을 수행한다. | |||
<source lang=bash> | |||
$ alembic -c alembic.ini upgrade head | |||
INFO [alembic.runtime.migration] Context impl MySQLImpl. | |||
INFO [alembic.runtime.migration] Will assume non-transactional DDL. | |||
INFO [alembic.runtime.migration] Running upgrade c939ba877f8f -> 5d2aab77fd9d, add provider info | |||
</source> | |||
== Downgrade == | |||
적용된 스크립트를 되돌릴 때 사용한다. downgrade() 에 정의된 작업을 수행한다. | |||
<source lang=bash> | |||
$ alembic -c alembic.ini downgrade -1 | |||
INFO [alembic.runtime.migration] Context impl MySQLImpl. | |||
INFO [alembic.runtime.migration] Will assume non-transactional DDL. | |||
INFO [alembic.runtime.migration] Running downgrade 5d2aab77fd9d -> c939ba877f8f, add provider info | |||
</source> | |||
== Current status check == | |||
<source lang=bash> | |||
$ alembic current --verbose | |||
INFO [alembic.runtime.migration] Context impl MySQLImpl. | |||
INFO [alembic.runtime.migration] Will assume non-transactional DDL. | |||
Current revision(s) for mysql://test-manager:XXXXX@192.168.0.10/test_manager: | |||
Rev: 5d2aab77fd9d (head) | |||
Parent: c939ba877f8f | |||
Path: /home/pchero/gitlab/pchero/test-manager/main/versions/5d2aab77fd9d_add_provider_info.py | |||
add provider info | |||
Revision ID: 5d2aab77fd9d | |||
Revises: c939ba877f8f | |||
Create Date: 2021-03-01 01:53:00.395262 | |||
</source> | |||
== History check == | |||
<source lang=bash> | |||
$ alembic history --verbose 7s | |||
Rev: 5d2aab77fd9d (head) | |||
Parent: c939ba877f8f | |||
Path: /home/pchero/gitlab/voipbin/test-manager/main/versions/5d2aab77fd9d_add_provider_info.py | |||
add provider info | |||
Revision ID: 5d2aab77fd9d | |||
Revises: c939ba877f8f | |||
Create Date: 2021-03-01 01:53:00.395262 | |||
</source> | </source> | ||
== See also == | == See also == | ||
* https://blog.outsider.ne.kr/1143 | * https://blog.outsider.ne.kr/1143 | ||
* https://alembic.sqlalchemy.org/en/latest/tutorial.html | |||
[[category:python]] | [[category:python]] | ||
[[category:Command/utility]] | [[category:Command/utility]] |
Latest revision as of 17:23, 28 February 2021
Overview
SQLAlchemy based database migration tool alembic 내용 정리
Add revision
alembic revision 을 사용하면 새로운 변경사항을 추가할 수 있다.
$ alembic -c config.ini revision -m "increse_reg_server_size"
Example
$ alembic -c config.ini revision -m "increse_reg_server_size" Generating /home/pchero/gittmp/asterisk/contrib/ast-db-manage/config/versions/1ae0609b6646_increse_reg_server_size.py ... done
Example
<source lang=bash> $ alembic init myproject
Creating directory /home/pchero/github/etc_examples/alembic_example/simple_test/myproject ... done Creating directory /home/pchero/github/etc_examples/alembic_example/simple_test/myproject/versions ... done Generating /home/pchero/github/etc_examples/alembic_example/simple_test/myproject/env.py ... done Generating /home/pchero/github/etc_examples/alembic_example/simple_test/myproject/script.py.mako ... done Generating /home/pchero/github/etc_examples/alembic_example/simple_test/myproject/README ... done Generating /home/pchero/github/etc_examples/alembic_example/simple_test/alembic.ini ... done Please edit configuration/connection/logging settings in '/home/pchero/github/etc_examples/alembic_example/simple_test/alembic.ini' before proceeding.
$ tree . . ├── alembic.ini └── myproject
├── env.py ├── README ├── script.py.mako └── versions
</source>
Upgrade
스크립트를 적용한다. upgrade() 에 정의된 작업을 수행한다. <source lang=bash> $ alembic -c alembic.ini upgrade head INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade c939ba877f8f -> 5d2aab77fd9d, add provider info </source>
Downgrade
적용된 스크립트를 되돌릴 때 사용한다. downgrade() 에 정의된 작업을 수행한다. <source lang=bash> $ alembic -c alembic.ini downgrade -1 INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running downgrade 5d2aab77fd9d -> c939ba877f8f, add provider info </source>
Current status check
<source lang=bash> $ alembic current --verbose INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Current revision(s) for mysql://test-manager:XXXXX@192.168.0.10/test_manager: Rev: 5d2aab77fd9d (head) Parent: c939ba877f8f Path: /home/pchero/gitlab/pchero/test-manager/main/versions/5d2aab77fd9d_add_provider_info.py
add provider info Revision ID: 5d2aab77fd9d Revises: c939ba877f8f Create Date: 2021-03-01 01:53:00.395262
</source>
History check
<source lang=bash> $ alembic history --verbose 7s Rev: 5d2aab77fd9d (head) Parent: c939ba877f8f Path: /home/pchero/gitlab/voipbin/test-manager/main/versions/5d2aab77fd9d_add_provider_info.py
add provider info Revision ID: 5d2aab77fd9d Revises: c939ba877f8f Create Date: 2021-03-01 01:53:00.395262
</source>