14

alembic 0.3.4、sqlalchemy、SQLite バージョン 3.7.4 をインストールし、ubuntu から SQLAlchemy 0.6.4 を SQLAlchemy 0.7 以降にアップグレードしました。ここにリンクされている指示に従いました:

今、私はテストしています: Auto Generating Migrations 私はパッケージを作成しました: スキーマ、およびスキーマの下のパッケージ マーカー: init .py で 1 行が定義されています:

__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 db を作成しましたが、Auto Generating Migrations の前にいくつかのテストを実行するために正常に動作しています。env.py ファイルを構成しました。次の 2 行が追加されます。

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 を使用して簡単な例をテストするのが難しい理由がわかりません。アプリケーション データ モデルを物理データベース モデルにインポートしたいだけです。そんなに複雑ですか?ありがとう。アレンビックを知っている誰かが、簡単な例を段階的に教えてください。その恩恵を受ける人が増えると思います。

4

1 に答える 1

30

また、Alembicがモデルモジュールを見つけることができなかったことがわかりました。env.py回避策として、モデルをインポートする前に以下を追加することで、モデルを強制的に動作させることができることがわかりました。

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

これはおそらく最善の解決策ではありませんが、Alembicに移行を自動生成させました。

于 2012-07-01T08:20:54.063 に答える