我安装了Alembic 0.3.4,sqlalchemy,SQLite版本3.7.4,并从我的Ubuntu上将SQLAlchemy 0.6.4升级到SQLAlchemy 0.7或更高版本。我按照此处链接的说明进行操作:
现在,我正在测试:自动生成迁移我创建了一个包:模式,并在模式:init .py下创建了一个包标记,其中定义了一行:
__all__ = ["teacher"]
我还创建了一个模块文件:schemas目录中的dbmodel.py,其内容如下
Base = declarative_base() class teacher(Base): __tablename__ = 'teacher' id = Column(Integer, primary_key=True) name = Column(String) department = Column(String)
顺便说一句,我创建了一个sqlite数据库,在自动生成迁移之前进行一些测试可以正常运行。我配置了env.py文件。添加了两行:
from schemas.dbmodel import Base target_metadata = Base.metadata
然后我运行:
alembic revision --autogenerate -m "Added teacher table"
但仍然出现错误:
Traceback (most recent call last): File "/usr/local/bin/alembic", line 9, in <module> load_entry_point('alembic==0.3.4', 'console_scripts', 'alembic')() File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/config.py", line 229, in main **dict((k, getattr(options, k)) for k in kwarg) File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/command.py", line 93, in revision script.run_env() File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/script.py", line 188, in run_env util.load_python_file(self.dir, 'env.py') File "/usr/local/lib/python2.7/dist-packages/alembic-0.3.4-py2.7.egg/alembic/util.py", line 185, in load_python_file module = imp.load_source(module_id, path, open(path, 'rb')) File "alembic/env.py", line 20, in <module> from schemas.dbmodel import Base ImportError: No module named schemas.dbmodel
我不知道为什么我很难用Alembic测试一个简单的例子。我只想将我的应用程序数据模型导入物理数据库模型。这么复杂吗?谢谢。请知道阿莱比奇的人一步一步给我们一个简单的例子。我想会有更多人从中受益。
我还发现Alembic找不到我的模型模块。作为一种解决方法,我发现,通过env.py在导入模型之前向我添加以下内容,可以强制其工作:
env.py
import os, sys sys.path.append(os.getcwd())
这可能不是最佳解决方案,但是Alembic可以自动生成我的迁移。