, alembic , - alembic , .
, ( alembic, , - migrations), __init__.py alembic .
- - , .
, :
<project root>
βββ setup.py
βββ mypackage
β βββ <project source files...>
β
βββ migrations
β βββ __init__.py
β βββ alembic.ini
β βββ apply.py
β βββ env.py
β βββ README
β βββ script.py.mako
β βββ versions
β βββ __init__.py
β βββ 58c8dcd5fbdc_revision_1.py
β βββ ec385b47da23_revision_2.py
β
βββ <other files and dirs>
setup.py:
from setuptools import find_packages
from setuptools import setup
setup(
name='mypackage',
packages=find_packages(exclude=('tests',)),
package_data={'migrations': ['alembic.ini']},
entry_points={
'console_scripts': ['apply-migrations=migrations.apply:main'],
},
install_requires=[
"SQLAlchemy==1.3.0",
"alembic==1.0.10",
]
)
, , migrations/apply.py:
import alembic.config
import os
here = os.path.dirname(os.path.abspath(__file__))
alembic_args = [
'-c', os.path.join(here, 'alembic.ini'),
'upgrade', 'head'
]
def main():
alembic.config.main(argv=alembic_args)
apply-migrations . , , , - , , . --sqlalchemy.url alembic_args.
migrations/env.py URL migrations/env.py , SQLACLHEMYURL migrations/env.py:
import os
config.set_main_options(os.getenv('SQLALCHEMYURL'))
:
SQLALCHEMYURL=... apply-migrations
.