首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动生成空迁移文件

问自动生成空迁移文件
EN

Stack Overflow用户
提问于 2020-07-15 15:08:44
回答 1查看 4K关注 0票数 4

我正在尝试将alembic库连接到数据库和sqlalchemy库。作为指南,我使用了这个示例链接

我的项目档案:

db.py

代码语言:javascript
复制
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)

models.py

代码语言:javascript
复制
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 (alembic设置)

代码语言:javascript
复制
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,
    )

当我跑的时候

代码语言:javascript
复制
alembic revision --autogenerate -m 'Add notest table'

在迁移/版本中创建这个上下文的新文件

代码语言:javascript
复制
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 =元数据变量有关。这一切似乎都是按照指示进行的,但迁移并不像预期的那样有效。

EN

回答 1

Stack Overflow用户

发布于 2020-07-15 16:52:34

如果有人有类似的问题。您要做的就是将表从models.py导入到metadata对象之前的env.py文件中。

env.py

代码语言:javascript
复制
...
from models.notes import notes
from db import DATABASE_URL, metadata
...
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62918026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档