1

アプリで次のように定義されたテーブルがあります。

users = Table('users', metadata,
    Column('user_id', Integer, autoincrement=True, primary_key=True),
    Column('user_name', Unicode(16), unique=True, nullable=False),
    Column('email_address', Unicode(255), unique=True, nullable=False),
    Column('display_name', Unicode(255)),
    Column('password', Unicode(80)),
    Column('created', DateTime, default=datetime.now),
    mysql_engine='InnoDB',
    mysql_charset='utf8',
)

しかし、しばらく開発した後、user_name を Unicode(255) などの長い長さに変更したいと考えています。私が理解しているように、この定義は最初の起動時に実行されるため、この行を変更するだけでは既存のデータベースでは機能しません。この新しい定義に移行する必要があります。すでに作成されたデータベースを新しい望ましい定義に変換するにはどうすればよいですか?

4

2 に答える 2

1

コードを更新しても既存のデータベース スキーマが更新されないことは間違いありません。Alembic を使用して、スキーマの移行を自動生成および実行できます。Alembic は、新しく編集したメタデータのスキーマをデータベースのスキーマと比較することで、変更スクリプトを自動生成できます。ここから開始: http://alembic.readthedocs.org/en/latest/

于 2013-02-20T03:50:49.577 に答える