繁体   English   中英

为自动生成迁移请求一个简单的 Alembic 工作示例

[英]Request a simple alembic working example for Auto Generating Migrations

我安装了 alembic 0.3.4、sqlalchemy、SQLite 版本 3.7.4,并从我的 ubuntu 将 SQLAlchemy 0.6.4 升级到 SQLAlchemy 0.7 或更高版本。 我按照此处链接的说明进行操作

现在我正在测试:自动生成迁移我创建了一个包:模式,以及模式下的包标记: init .py,其中定义了一行:

__all__ = ["teacher"]

我还创建了一个模块文件: dbmodel.py 在 schemas 目录中,内容如下

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的人一步一步地给我们一个简单的例子。 相信会有更多人从中受益。

我还发现 Alembic 找不到我的模型模块。 作为一种解决方法,我发现通过在导入模型之前将以下内容添加到我的env.py ,我可以强制它工作:

import os, sys
sys.path.append(os.getcwd())

这可能不是最好的解决方案,但它让 Alembic 自动生成我的迁移。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM