我从我的 ubuntu 安装了 alembic 0.3.4、sqlalchemy、SQLite 版本 3.7.4,并将 SQLAlchemy 0.6.4 升级到 SQLAlchemy 0.7 或更高版本。我按照此处链接的说明进行操作:
现在我正在测试:自动生成迁移我已经创建了一个包:模式,并在模式下创建了一个包标记:init .py,其中定义了一行:
__all__ = ["teacher"]
我还在模式目录中创建了一个模块文件: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的人一步一步地给我们一个简单的例子。我想更多的人会从中受益。