I have oauth secret
and oauth key
in client
table. Now I moving them to oauth credentials
table which will be created during
You can create a DBSession with sqlalchemy engine bind, then you can avoid use SQL query.
from myapp.models import Client, ClientCredential
from alembic import op, context
import sqlalchemy as sa
def upgrade():
### commands auto generated by Alembic - please adjust! ###
url = context.config.get_main_option("sqlalchemy.url")
engine = sa.create_engine(url)
DBSession.configure(bind=engine)
op.create_table(
'client_credential',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=False),
sa.Column('client_id', sa.Integer(), nullable=False),
sa.Column('key', sa.String(length=22), nullable=False),
sa.Column('secret', sa.String(length=44), nullable=False),
sa.Column('is_active', sa.Boolean(), nullable=False),
sa.ForeignKeyConstraint(['client_id'], ['client.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('key'))
# Here I need to copy data from table A to newly created Table.
# Now Client table will not have secret and key attributes
clients = [
{'secret': client.secret,
'key': client.key,
'is_active': True,
'client_id': client.id,
'created_at': sa.func.now(),
'updated_at': sa.func.now()}
for client in Client.query.all()]
op.bulk_insert(ClientCredential, clients)
#Also replaced above two lines with
#connection = op.get_bind()
#print connection.execute(Client, Client.query.all())
op.drop_column(u'client', u'secret')
op.drop_column(u'client', u'key')