sqlalchemy - Alembic 自动生成空迁移文件
问题描述
我正在尝试将alembic
库连接到数据库和sqlalchemy
库。作为指南,我使用此示例 链接
我的项目文件:
数据库.py
from databases import Database
from sqlalchemy import MetaData, create_engine
DATABASE_URL = "postgresql://....@localhost:5432/db"
engine = create_engine(DATABASE_URL)
metadata = MetaData()
database = Database(DATABASE_URL)
模型.py
from sqlalchemy import Table, Column, Integer, String, DateTime
from sqlalchemy.sql import func
from db import metadata
notes = Table(
"notes",
metadata,
Column("id", Integer, primary_key=True),
Column("title", String(50)),
Column("description", String(50)),
Column("created_date", DateTime, default=func.now(), nullable=False),
)
env.py(蒸馏器设置)
from db import DATABASE_URL, metadata
....
#add new
target_metadata = metadata
...
#change
def run_migrations_online():
config.set_main_option('sqlalchemy.url', str(DATABASE_URL))
connectable = engine_from_config(
config.get_section(config.config_ini_section),
prefix="sqlalchemy.",
poolclass=pool.NullPool,
)
当我跑
alembic revision --autogenerate -m 'Add notest table'
迁移/版本中的新文件创建此上下文
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
我想这可能与使用 target_metadata = metadata 变量有关。似乎一切都按照说明进行,但迁移没有按预期工作。
解决方案
如果有人有类似的问题。您所要做的就是在对象之前将表从 models.py 导入到 env.py 文件中metadata
。
环境.py
...
from models.notes import notes
from db import DATABASE_URL, metadata
...
推荐阅读
- javascript - 使用 javascript 将差异与 CSV 中找到的数据连接起来
- html - Flexbox and Left Sidebar Overlay
- docker - 将命令输出分配给 Dockerfile 中的 ARG 变量
- r - 在 R 中使用包含频率/权重/计数的列
- python - Minimize quadratic function subject to linear equality constraints with SciPy
- c - c中printf函数的意外行为
- gremlin - 我应该将 GryoMapper 声明为静态字段吗?
- javascript - 如何更改引导弹出箭头的大小
- php - Imagemagick 生成质量差的缩略图
- streaming - 我正在尝试使用 XSLT Maps 获取一个查看另一个字段的字段