我想将alembic revision --autogenerate
与我自己的模型类一起使用。因此,我需要将它们导入myproject/alembic/env.py
中作为described in the docs。但是,即使我尝试了很多变体,这也不起作用。
我不确定在哪种情况下(不知道这是不是正确的单词)alembic运行env.py
。也许会导致一些错误。
这是我使用的目录和文件结构。
myproject/
common/
__init__.py
model.py
alembic/
env.py
错误是那种
from .common import model
SystemError: Parent module '' not loaded, cannot perform relative import
myproject
本身只是一个存储库/工作目录。它没有安装到系统中(带有pip3
,apt-get
,easyinstall
或其他任何东西)。 最佳答案
大约花了几个小时研究这个相同的问题,我找到了一个解决方案。首先,这是我现在的结构:
. ← That's the root directory of my project
├── alembic.ini
├── dev-requirements.txt
├── requirements.txt
├── runtime.txt
├── setup.cfg
├── src
│ └── models
│ ├── base.py
│ ...
│ └── migrations
│ ├── env.py
│ ├── README
│ ├── script.py.mako
│ └── versions
│
└── tests
在
env.py
中,我只是这样做:import sys
from os.path import abspath, dirname
sys.path.insert(0, dirname(dirname(dirname(abspath(__file__))))) # Insert <.>/src
import models # now it can be imported
target_metadata = models.base.Base.metadata
希望你觉得这个有用! :)
编辑:然后,我在数据库为空(没有表)的情况下进行了第一次修订,alembic自动为
upgrade()
和downgrade()
填充了所有内容。我这样做是因为并不是所有的桌子都被Alembic自动检测到。关于python-3.x - 如何将自己的模型导入myproject/alembic/env.py?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32032940/