Alembic --autogenerate生成空迁移。

21 浏览
0 Comments

Alembic --autogenerate生成空迁移。

我正在尝试首次使用Alembic,并想要使用这里描述的--autogenerate功能。

我的项目结构如下:

project/
       configuration/
                    __init__.py
                    dev.py
                    test.py
       core/
           app/
              models/
                    __init__.py
                    user.py
       db/
          alembic/
                  versions/
                  env.py
          alembic.ini

我正在使用FlaskSQLAlchemy以及它们的Flask-SQLAlchemy扩展。我的模型User如下所示:

class User(UserMixin, db.Model):
    __tablename__ = 'users'
    # noinspection PyShadowingBuiltins
    uuid = Column('uuid', GUID(), default=uuid.uuid4, primary_key=True,
                  unique=True)
    email = Column('email', String, nullable=False, unique=True)
    _password = Column('password', String, nullable=False)
    created_on = Column('created_on', sa.types.DateTime(timezone=True),
                        default=datetime.utcnow())
    last_login = Column('last_login', sa.types.DateTime(timezone=True),
                        onupdate=datetime.utcnow())

这里所描述的,我修改了env.py如下:

from configuration import app
alembic_config = config.get_section(config.config_ini_section)
alembic_config['sqlalchemy.url'] = app.config['SQLALCHEMY_DATABASE_URI']
engine = engine_from_config(
    alembic_config,
            prefix='sqlalchemy.',
            poolclass=pool.NullPool)

from configuration import db
target_metadata = db.metadata

其中configuration.__init__py如下所示:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import dev
app = Flask(__name__)
app.config.from_envvar('SETTINGS_PT')
db = SQLAlchemy(app)

现在当我运行迁移时:

$alembic revision --autogenerate -m "Added user table"
INFO  [alembic.migration] Context impl PostgresqlImpl.
INFO  [alembic.migration] Will assume transactional DDL.
  Generating /Users/me/IdeaProjects/project/db/alembic/versions/55a9d5
  35d8ae_added_user_table.py...done

但是alembic/versions/55a9d5文件中的upgrade()downgrade()方法是空的:

"""Added user table
Revision ID: 1b62a62eef0d
Revises: None
Create Date: 2013-03-27 06:37:08.314177
"""
# revision identifiers, used by Alembic.
revision = '1b62a62eef0d'
down_revision = None
from alembic import op
import sqlalchemy as sa
def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    pass
    ### end Alembic commands ###
def downgrade():
    ### commands auto generated by Alembic - please adjust! ###
    pass
    ### end Alembic commands ###

为什么它不能理解有一个新的User模型?

请帮忙解决。

0