Ich versuche Alembic
zum ersten Mal zu verwenden und wollen --autogenerate
Funktion here beschrieben verwendenAlembic --autogenerate leer Migration Herstellung
Meine Projektstruktur sieht aus wie
project/
configuration/
__init__.py
dev.py
test.py
core/
app/
models/
__init__.py
user.py
db/
alembic/
versions/
env.py
alembic.ini
Ich bin mit Flask
und SQLAlchemy
und ihre Flask-SQLAlchemy
Erweiterung. mein Modell User
sieht aus wie
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())
Wie here beschrieben, modifizierte ich env.py
wie
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import dev
app = Flask(__name__)
app.config.from_envvar('SETTINGS_PT')
db = SQLAlchemy(app)
wie
aussehen
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)
und
from configuration import db
target_metadata = db.metadata
wo configuration.__init__py
aussieht Nun
wenn ich laufe Migration
$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
aber Datei alembic/versions/55a9d5
leer upgrade()
und downgrade()
Methoden
"""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 ###
hat Wie kommt es nicht in der Lage zu verstehen, dass es ein neues ist User
Modell? Bitte helfen
Ihr Alembic env.py muss sicherstellen, dass das Benutzermodell importiert wurde, so dass die Tabelle im Speicher vorhanden ist, wenn Migrationen ausgeführt werden. – zzzeek
Das war es!Vielen Dank für Ihre Hilfe Michael – daydreamer
Kann nützlich sein: Wenn leere Migrationen generiert werden, nachdem Sie die Spalte aktualisiert haben, überprüfen Sie diese Antwort http://stackoverflow.com/a/17176843/1339254 – alexche8