norbertpys answer , , : , , . (. ), ; , .
(. this Gist). :
def upgrade():
op.add_column('users', sa.Column('lastname', sa.Unicode(length=50), nullable=True))
op.add_column('users', sa.Column('firstname', sa.Unicode(length=50), nullable=True))
t_users = sa.Table(
'users',
sa.MetaData(),
sa.Column('id', sa.String(32)),
sa.Column('name', sa.Unicode(length=100)),
sa.Column('lastname', sa.Unicode(length=50)),
sa.Column('firstname', sa.Unicode(length=50)),
)
connection = op.get_bind()
results = connection.execute(sa.select([
t_users.id,
t_users.name,
])).fetchall()
for id_, name in results:
firstname, lastname = name.rsplit(' ', 1)
connection.execute(t_users.update().where(t_users.id == id_).values(
lastname=lastname,
firstname=firstname,
))
op.drop_column('users', 'name')
:
- Gist, Alembic .
- DB -. -, MySQL (. ", " ). , .
downgrade() .