在 alembic 修订版中导入单独的脚本



我的 Alembic 迁移中有一些函数,这些函数倾向于在多个修订脚本中使用(例如,向表添加创建/更新时间戳(。我不想一遍又一遍地复制粘贴相同的函数,但是从修订脚本内部导入模块时一直遇到问题。

项目目录结构如下所示:

app/
__init__.py
main.py
alembic/
env.py
versions/
xxx_revision.py
tests/
test_stuff.py

我尝试将__init__.py放入alembic目录中并在那里放置lib.py,但是相对导入不起作用。我还尝试将lib.py放在alembic/versions/目录中,但alembic抱怨它不是修订文件。

我需要同样的东西。所以最后我找到了这个解决方案:

  1. 将 python 文件alembic_utils.py添加到应用程序目录(使用您的函数 - some_function(

  2. 在你的xxx_revision.py中这样说:


import os
import sys
PACKAGE_PARENT = '../..'
SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(),os.path.expanduser(__file__))))
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))

并添加导入:

from app.alembic_utils import some_function

最新更新