Flask-Migrate迁移将在不同的数据库引擎上进行吗?

问题描述 投票:0回答:1

我正在编写使用Flask-SQLAlchemy和Flask-Migrate的Flask应用程序。生产具有PostgreSQL数据库,但是对于开发,我希望使用SQLite而不是必须在开发机器上安装完整的PostgreSQL。

我按照in its docs的说明设置了Flask-Migrate。我忍不住注意到,当我在开发箱上运行flask db migrate时,这是写入控制台的前两行:

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.

我的问题:这是否意味着生成的迁移脚本仅适用于SQLite?

我不希望这样,因为您应该将脚本提交到版本控制(在您手动检查之后)并将其用于生产中的迁移。 Flask-Migrate的作者本人也承认SQLAlchemy的好处之一是您可以在开发和生产中使用其他数据库引擎(请参见his blog post)。但是,为什么它告诉我这些假设呢?

python flask flask-sqlalchemy alembic flask-migrate
1个回答
0
投票

在烧瓶迁移中,sqlalchmey从SQLALCHEMY_DATABASE_URI与数据库连接,在您的应用程序中,您直接将其指定为'sqlite:///' + os.path.join(basedir, 'app.db')或在环境变量中由DATABASE_URL定义。因此,如果直接将连接器数据添加到SQLALCHEMY_DATABASE_URI,则需要再次在代码中为Postgresql服务器更改它。给它作为env变量,您可以在那里为任何数据库更改它,而无需处理代码。

现在问您的问题,因为您将sqlite连接器定义为sqlalchmey,所以迁移脚本仅对sqlite运行,而不对postgres运行,对于postgres,您需要再次重新初始化迁移]]

© www.soinside.com 2019 - 2024. All rights reserved.