Alembic 开源项目使用教程
1. 项目的目录结构及介绍
Alembic/
├── alembic/
│ ├── versions/
│ │ ├── 123456789abc_initial_migration.py
│ │ └── ...
│ ├── env.py
│ ├── script.py.mako
│ └── README.md
├── tests/
│ ├── __init__.py
│ └── test_basic.py
├── .gitignore
├── alembic.ini
├── README.md
└── setup.py
目录结构介绍
- alembic/: 包含所有与数据库迁移相关的文件。
- versions/: 存放具体的迁移脚本。
- env.py: 配置Alembic环境和连接数据库。
- script.py.mako: 迁移脚本的模板文件。
- README.md: 项目说明文档。
- tests/: 包含项目的测试文件。
- .gitignore: Git忽略文件配置。
- alembic.ini: Alembic配置文件。
- README.md: 项目主说明文档。
- setup.py: 项目安装脚本。
2. 项目的启动文件介绍
env.py
env.py
是Alembic的核心配置文件,负责配置数据库连接和迁移环境。以下是主要内容:
from logging.config import fileConfig
from sqlalchemy import engine_from_config
from sqlalchemy import pool
from alembic import context
# 配置文件
config = context.config
# 配置日志
fileConfig(config.config_file_name)
# 导入目标元数据
import myapp.models as models
target_metadata = models.Base.metadata
# 运行迁移
def run_migrations_offline():
context.configure(
url=config.get_main_option("sqlalchemy.url"),
target_metadata=target_metadata,
literal_binds=True,
dialect_opts={"paramstyle": "named"},
)
with context.begin_transaction():
context.run_migrations()
def run_migrations_online():
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()
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()
3. 项目的配置文件介绍
alembic.ini
alembic.ini
是Alembic的配置文件,包含数据库连接字符串和其他配置选项。以下是主要内容:
[alembic]
# 数据库URL
sqlalchemy.url = sqlite:///alembic.db
# 模板文件
script_location = alembic
version_locations = %(script_location)s/versions
# 日志配置
[loggers]
keys = root,sqlalchemy,alembic
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = WARN
handlers = console
qualname =
[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine
[logger_alembic]
level = INFO
handlers =
qualname = alembic
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S
以上是Alembic开源项目的基本使用教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望对您有所帮助!