use*_*336 12 python orm data-migration sqlalchemy alembic
我从我的ubuntu安装了alembic 0.3.4,sqlalchemy,SQLite版本3.7.4,并将SQLAlchemy 0.6.4升级到SQLAlchemy 0.7或更高版本.我按照说明操作:http://alembic.readthedocs.org/en/latest/tutorial.html
现在我正在测试:自动生成迁移我创建了一个包:schemas和一个包标记下的模式:init .py,其中定义了一行:
__all__ = ["teacher"]
Run Code Online (Sandbox Code Playgroud)
我还在schemas目录中创建了一个模块文件:dbmodel.py,其中包含以下内容
Base = declarative_base()
class teacher(Base):
__tablename__ = 'teacher'
id = Column(Integer, primary_key=True)
name = Column(String)
department = Column(String)
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我创建了一个sqlite数据库,并且在自动生成迁移之前进行一些测试它运行正常.我配置了env.py文件.添加了两行:
from schemas.dbmodel import Base
target_metadata = Base.metadata
Run Code Online (Sandbox Code Playgroud)
然后我跑:
alembic revision --autogenerate -m "Added teacher table"
Run Code Online (Sandbox Code Playgroud)
但仍然得到错误:
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
Run Code Online (Sandbox Code Playgroud)
我不知道为什么使用alembic测试一个简单的例子是如此困难.我只想将我的应用程序数据模型导入到物理数据库模型中.这太复杂了吗?谢谢.请知道alembic的人给我们一步一步的简单介绍.我想更多的人会从中受益.
and*_*yhd 25
我还发现Alembic无法找到我的模型模块.作为一种解决方法,我发现通过env.py在导入我的模型之前向我添加以下内容,我可以强制它工作:
import os, sys
sys.path.append(os.getcwd())
Run Code Online (Sandbox Code Playgroud)
这可能不是最好的解决方案,但它让Alembic自动生成我的迁移.
| 归档时间: |
|
| 查看次数: |
6039 次 |
| 最近记录: |