Python alembic.op 模块,execute() 实例源码
我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用alembic.op.execute()。
def upgrade():
op.execute(sa.schema.CreateSequence(sa.Sequence('pod_states_id_seq')))
op.add_column('pod_states', sa.Column('id', sa.Integer(), nullable=False,
server_default=sa.text("nextval('pod_states_id_seq'::regclass)")))
op.execute("ALTER TABLE pod_states DROP CONSTRAINT pod_states_pkey,"
"ADD CONSTRAINT pod_states_pkey PRIMARY KEY (id);")
op.add_column('container_states', sa.Column('exit_code', nullable=True))
op.add_column('container_states', sa.Column('pod_state_id', sa.Column('reason', sa.Text(), nullable=True))
op.create_index('ix_pod_id_start_time', 'pod_states', ['pod_id', 'start_time'], unique=True)
op.create_foreign_key('container_states_pod_state_id_fkey', 'container_states',
'pod_states', ['pod_state_id'], ['id'])
upgrade_data()
op.alter_column('container_states', 'pod_state_id',
existing_type=sa.INTEGER(), nullable=False)
op.drop_constraint(u'container_states_pod_id_fkey',
type_='foreignkey')
op.drop_column('container_states', 'pod_id')
def downgrade():
op.add_column('container_states', sa.Column('pod_id', postgresql.UUID(),
autoincrement=False, nullable=True))
op.create_foreign_key(u'container_states_pod_id_fkey',
'container_states', 'pods', ['pod_id'], ['id'])
downgrade_data()
op.drop_column('container_states', 'reason')
op.drop_column('container_states', 'exit_code')
op.drop_constraint('container_states_pod_state_id_fkey',
type_='foreignkey')
op.drop_index('ix_pod_id_start_time', table_name='pod_states')
op.drop_column('container_states', 'pod_state_id')
op.execute("ALTER TABLE pod_states DROP CONSTRAINT pod_states_pkey,"
"ADD CONSTRAINT pod_states_pkey PRIMARY KEY (pod_id,start_time);")
op.drop_column('pod_states', 'id')
op.execute(sa.schema.DropSequence(sa.Sequence('pod_states_id_seq')))
def upgrade():
op.create_table('mastodon_instances',
sa.Column('instance', sa.String(), nullable=False),
sa.Column('popularity', sa.Float(), server_default='10',
sa.PrimaryKeyConstraint('instance', name=op.f('pk_mastodon_instances'))
)
op.execute("""
INSERT INTO mastodon_instances (instance,popularity) VALUES
('mastodon.social',100),
('mastodon.cloud',90),
('social.tchncs.de',80),
('mastodon.xyz',70),
('mstdn.io',60),
('awoo.space',50),
('cybre.space',40),
('mastodon.art',30)
;
""")
def upgrade():
### commands auto generated by Alembic - please adjust! ###
query_tbl = sa.sql.table('query', sa.sql.column('platform', sa.String))
pack_tbl = sa.sql.table('pack', sa.String))
op.execute(
query_tbl.update() \
.where(
sa.or_(
query_tbl.c.platform==op.inline_literal('redhat,centos'),
query_tbl.c.platform==op.inline_literal('ubuntu'),
)
).values({'platform': op.inline_literal('linux')})
)
op.execute(
pack_tbl.update() \
.where(
sa.or_(
query_tbl.c.platform==op.inline_literal('redhat,
)
).values({'platform': op.inline_literal('linux')})
)
op.add_column('query', sa.Column('shard', nullable=True))
### end Alembic commands ###
def downgrade():
op.execute(textwrap.dedent("""ALTER TABLE device_group RENAME TO "group";"""))
op.execute(textwrap.dedent("""
CREATE OR REPLACE FUNCTION public.upsert_group(p_group_name character varying,p_device_list character varying)
RETURNS integer AS
$BODY$
DECLARE num_rows integer;
BEGIN
INSERT INTO public.group AS gro (group_name,device_list)
VALUES (p_group_name,p_device_list)
ON CONFLICT (group_name) DO UPDATE
SET
device_list = p_device_list
WHERE gro.group_name = p_group_name;
GET DIAGNOSTICS num_rows = ROW_COUNT;
RETURN num_rows;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;"""))
def downgrade():
# Drop trigger
op.execute(
'DROP TRIGGER increment_num_rows_in_db_array ON callset_to_db_array_association CASCADE')
op.drop_column(u'db_array', 'num_rows')
op.create_table(
'db_row',
sa.Column('id', sa.BIGINT(),
sa.Column('db_array_id', autoincrement=False,
sa.Column('tile_row_id',
sa.ForeignKeyConstraint(['db_array_id'],[u'db_array.id'], name=u'db_row_db_array_id_fkey'),
sa.PrimaryKeyConstraint('id', name=u'db_row_pkey'))
op.add_column(
u'callset',
sa.Column('individual_id', nullable=False))
op.add_column(u'callset', sa.Column('dbrow_id', nullable=False))
op.drop_constraint('callset_source_sample_id_fkey','callset', type_='foreignkey')
op.drop_constraint('callset_target_sample_id_fkey', type_='foreignkey')
op.create_foreign_key(u'callset_individual_id_fkey', 'individual', ['individual_id'], ['id'])
op.create_foreign_key(u'callset_dbrow_id_fkey', 'db_row', ['dbrow_id'], ['id'])
op.drop_column(u'callset', 'target_sample_id')
op.drop_column(u'callset', 'source_sample_id')
op.drop_index('db_array_id_tile_row_id_idx',table_name='callset_to_db_array_association')
op.drop_table('callset_to_db_array_association')
op.drop_table('sample')
def upgrade():
# When making changes to a column that has a foreign key,we need to drop
# and then re-add the constraint
op.execute('DELETE FROM txn_reconciles WHERE txn_id IS NULL;')
op.execute('LOCK TABLES txn_reconciles WRITE,transactions WRITE;')
op.drop_constraint('fk_txn_reconciles_txn_id_transactions',
'txn_reconciles', type_='foreignkey')
op.alter_column(
'txn_reconciles',
'txn_id',
existing_type=mysql.INTEGER(display_width=11),
nullable=False
)
op.create_foreign_key('fk_txn_reconciles_txn_id_transactions',
'txn_reconciles', 'transactions', ['txn_id'], ['id'])
op.execute('UNLOCK TABLES;')
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('skin')
op.drop_table('modules')
op.drop_column('node', 'mods')
op.drop_column('node', 'parentid')
op.drop_column('node', 'folderid')
op.drop_column('node', 'image')
op.drop_column('node', 'folder')
op.drop_column('node', 'custom')
op.drop_column('node', 'target')
op.drop_column('node', 'type')
op.drop_column('node', 'skin_id')
op.drop_column('node', 'modules_id')
op.rename_table('node', 'page')
op.execute('ALTER SEQUENCE node_id_seq RENAME TO page_id_seq')
# ### end Alembic commands ###
def upgrade():
# we dont retain historical data as we simply dont care yet
op.execute('truncate table filecoverage')
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('filecoverage', sa.Column(
'build_id', zeus.db.types.guid.GUID(), nullable=False))
op.create_index(op.f('ix_filecoverage_build_id'),
'filecoverage', ['build_id'], unique=False)
op.create_unique_constraint('unq_coverage_filname', 'filecoverage', [
'build_id', 'filename'])
op.drop_constraint('unq_job_filname', type_='unique')
op.drop_constraint('filecoverage_job_id_fkey',
'filecoverage', type_='foreignkey')
op.create_foreign_key(None, 'build', [
'build_id'], ['id'], ondelete='CASCADE')
op.drop_column('filecoverage', 'job_id')
# ### end Alembic commands ###
def set_nullable_columns_default_values():
role = sa.table(u'jobs', sa.column(u'address_is_valid'))
op.execute(role.update().values(address_is_valid=True))
role = sa.table(u'jobs', sa.column(u'geolocation_is_valid'))
op.execute(role.update().values(geolocation_is_valid=True))
role = sa.table(u'jobs', sa.column(u'last_sync'))
op.execute(role.update().values(last_sync=datetime(1970, 1, 1)))
role = sa.table(u'jobs', sa.column(u'latitude'))
op.execute(role.update().values(latitude=0.0))
role = sa.table(u'jobs', sa.column(u'longitude'))
op.execute(role.update().values(longitude=0.0))
role = sa.table(u'jobs', sa.column(u'pushed_on_twitter'))
op.execute(role.update().values(pushed_on_twitter=True))
role = sa.table(u'jobs', sa.column(u'publication_datetime_is_fake'))
op.execute(role.update()
.where(role.c.publication_datetime_is_fake == None)
.values(publication_datetime_is_fake=False))
def upgrade():
for table_name in ("resource", "resource_history", "metric"):
creator_col = sa.Column("creator", sa.String(255))
created_by_user_id_col = sa.Column("created_by_user_id",
sa.String(255))
created_by_project_id_col = sa.Column("created_by_project_id",
sa.String(255))
op.add_column(table_name, creator_col)
t = sa.sql.table(
table_name, creator_col,
created_by_user_id_col, created_by_project_id_col)
op.execute(
t.update().values(
creator=(
created_by_user_id_col + ":" + created_by_project_id_col
)).where((created_by_user_id_col is not None)
| (created_by_project_id_col is not None)))
op.drop_column(table_name, "created_by_user_id")
op.drop_column(table_name, "created_by_project_id")
def upgrade():
op.add_column("resource_type", sa.Column('tablename', sa.String(18),
nullable=True))
resource_type = sa.Table(
'resource_type', sa.MetaData(),
sa.Column('name', sa.String(255),
sa.Column('tablename', nullable=True)
)
op.execute(resource_type.update().where(
resource_type.c.name == "instance_network_interface"
).values({'tablename': op.inline_literal("'instance_net_int'")}))
op.execute(resource_type.update().where(
resource_type.c.name != "instance_network_interface"
).values({'tablename': resource_type.c.name}))
op.alter_column("resource_type", "tablename", type_=sa.String(18),
nullable=False)
op.create_unique_constraint("uniq_resource_type0tablename",
"resource_type", ["tablename"])
def upgrade():
op.add_column('instance', sa.Column('created_by', mysql.VARCHAR(collation='utf8_bin', length=64), nullable=False))
op.add_column('instance', sa.Column('created_at', sa.DateTime(), sa.Column('updated_by', sa.Column('updated_at', nullable=False))
op.execute("""
UPDATE instance JOIN (
SELECT instance_id,min(created) min_created,max(created) max_created,author
FROM log
GROUP BY instance_id,author
) log
ON id = instance_id
SET created_at = min_created,created_by = author,
updated_at = max_created,updated_by = author
""")
def downgrade():
for seqname in ('contact_pronouns_position', 'contact_name_position',
'contact_email_position',
):
op.execute(DropSequence(Sequence(seqname)))
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('contact_pronouns')
op.drop_table('contact_name')
op.drop_table('contact_email')
op.drop_table('roles_users')
op.drop_table('contact')
op.drop_index(op.f('ix_user_username'), table_name='user')
op.drop_table('user')
op.drop_table('role')
op.drop_table('pronouns')
# ### end Alembic commands ###
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('tag',
sa.Column('id',
sa.Column('user_id',
sa.Column('name', sa.String(length=80),
sa.Column('color', ColorType(length=20), nullable=True),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('user_id', 'name')
)
op.create_table('contact_tag',
sa.Column('contact_id',
sa.Column('tag_id',
sa.Column('position',
sa.Column('note',
sa.ForeignKeyConstraint(['contact_id'], ['contact.id'],
sa.ForeignKeyConstraint(['tag_id'], ['tag.id'],
sa.PrimaryKeyConstraint('contact_id', 'tag_id')
)
# ### end Alembic commands ###
op.execute(CreateSequence(Sequence('contact_tag_position')))
def upgrade():
"""Upgrade the database to a newer revision."""
# ### commands auto generated by Alembic - please adjust! ###
# See https://bitbucket.org/zzzeek/alembic/issues/123/a-way-to-run-non-transactional-ddl
connection = None
if not op.get_context().as_sql:
connection = op.get_bind()
connection.execution_options(isolation_level='AUTOCOMMIT')
op.execute("ALTER TYPE ecosystem_backend_enum ADD VALUE 'nuget'")
op.execute("INSERT INTO ecosystems VALUES "
"('{id}','{name}','{backend}','{url}','{fetch_url}')".
format(id=8, name='nuget', backend='nuget',
url='https://nuget.org/', fetch_url='https://api.nuget.org/packages/'))
if connection is not None:
connection.execution_options(isolation_level='READ_COMMITTED')
# ### end Alembic commands ###
def upgrade():
conn = op.get_bind()
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('projects', sa.Column('task_creation_mode', nullable=True))
op.create_index('idx_geometry', 'projects', ['geometry'], unique=False, postgresql_using='gist')
op.add_column('tasks', sa.Column('extra_properties', sa.Unicode(), nullable=True))
for project in conn.execute(projects.select()):
zooms = conn.execute(
sa.sql.expression.select([tasks.c.zoom]).distinct(tasks.c.zoom)
.where(tasks.c.project_id == project.id))
zooms = zooms.fetchall()
if len(zooms) == 1 and zooms[0] == (None,):
op.execute(
projects.update().where(projects.c.id == project.id)
.values(task_creation_mode=1))
# ### end Alembic commands ###
def upgrade():
op.execute("""
BEGIN;
ALTER TYPE taskflow_statuses RENAME TO taskflow_statuses_old;
CREATE TYPE taskflow_statuses AS ENUM('queued','pushed','running','retry','dequeued','failed','success');
CREATE TYPE taskflow_statuses_inter AS ENUM('queued','retrying','success');
ALTER TABLE workflow_instances ALTER COLUMN status TYPE taskflow_statuses_inter USING status::text::taskflow_statuses_inter;
UPDATE workflow_instances SET status = 'retry' WHERE status = 'retrying';
ALTER TABLE workflow_instances ALTER COLUMN status TYPE taskflow_statuses USING status::text::taskflow_statuses;
ALTER TABLE task_instances ALTER COLUMN status TYPE taskflow_statuses_inter USING status::text::taskflow_statuses_inter;
UPDATE task_instances SET status = 'retry' WHERE status = 'retrying';
ALTER TABLE task_instances ALTER COLUMN status TYPE taskflow_statuses USING status::text::taskflow_statuses;
DROP TYPE taskflow_statuses_old;
DROP TYPE taskflow_statuses_inter;
COMMIT;
""")
def downgrade():
op.execute("""
BEGIN;
ALTER TYPE taskflow_statuses RENAME TO taskflow_statuses_old;
CREATE TYPE taskflow_statuses AS ENUM('queued','success');
ALTER TABLE workflow_instances ALTER COLUMN status TYPE taskflow_statuses_inter USING status::text::taskflow_statuses_inter;
UPDATE workflow_instances SET status = 'retrying' WHERE status = 'retry';
ALTER TABLE workflow_instances ALTER COLUMN status TYPE taskflow_statuses USING status::text::taskflow_statuses;
ALTER TABLE task_instances ALTER COLUMN status TYPE taskflow_statuses_inter USING status::text::taskflow_statuses_inter;
UPDATE task_instances SET status = 'retrying' WHERE status = 'retry';
ALTER TABLE task_instances ALTER COLUMN status TYPE taskflow_statuses USING status::text::taskflow_statuses;
DROP TYPE taskflow_statuses_old;
DROP TYPE taskflow_statuses_inter;
COMMIT;
""")
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.execute("UPDATE translated_string SET base_string='' WHERE base_string is NULL")
op.alter_column('translated_string', 'base_string',
existing_type=sa.TEXT(),
nullable=False)
op.execute("UPDATE translated_string SET comment='' WHERE comment is NULL")
op.alter_column('translated_string', 'comment',
nullable=False)
op.execute("UPDATE translated_string SET context='' WHERE context is NULL")
op.alter_column('translated_string', 'context',
nullable=False)
op.execute("UPDATE translated_string SET translation='' WHERE translation is NULL")
op.alter_column('translated_string', 'translation',
nullable=False)
op.execute("UPDATE translated_string SET translator_comment='' WHERE translator_comment is NULL")
op.alter_column('translated_string', 'translator_comment',
nullable=False)
# ### end Alembic commands ###
def upgrade():
op.execute("""
UPDATE track SET
first_play = (SELECT MIN(date) FROM play WHERE track_id = track.id),
last_play = (SELECT MAX(date) FROM play WHERE track_id = track.id)
;
""")
op.execute("""
UPDATE album SET
first_play = (SELECT MIN(first_play) FROM track WHERE album_id = album.id),
last_play = (SELECT MAX(last_play) FROM track WHERE album_id = album.id)
;
""")
op.execute("""
UPDATE artist SET
first_play = (SELECT MIN(first_play) FROM album WHERE artist_id = artist.id),
last_play = (SELECT MAX(last_play) FROM album WHERE artist_id = artist.id)
;
""")
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('patient_demographics', sa.Column('ethnicity_id', nullable=True))
op.add_column('patient_demographics', sa.Column('nationality_id', nullable=True))
op.execute('update patient_demographics set ethnicity_id = (select id from ethnicities where code = ethnicity)')
op.create_foreign_key(
'patient_demographics_ethnicity_id_fkey',
'patient_demographics',
'ethnicities',
['ethnicity_id'],
['id']
)
op.create_foreign_key(
'patient_demographics_nationality_id_fkey',
'nationalities',
['nationality_id'],
['id']
)
op.drop_column('patient_demographics', 'ethnicity')
# ### end Alembic commands ###
def upgrade(pyramid_env):
with context.begin_transaction():
op.add_column('idea_idea_link', sa.Column(
'rdf_temp', sa.String(60), nullable=False))
with context.begin_transaction():
op.execute('UPDATE idea_idea_link SET "rdf_temp" = "rdf_type"')
op.execute('''UPDATE idea_idea_link
SET "rdf_temp" = 'idea:InclusionRelation'
WHERE "rdf_temp" = 'idea:GenericIdeaNode' ''')
mark_changed()
with context.begin_transaction():
op.drop_column('idea_idea_link', 'rdf_type')
op.add_column('idea_idea_link', sa.Column(
'rdf_type',
server_default='idea:InclusionRelation'))
op.drop_column('idea_idea_link', 'rdf_temp')
def upgrade(pyramid_env):
with context.begin_transaction():
op.create_table(
'action_on_post',
sa.Column(
'id', sa.Integer,
sa.ForeignKey('action.id', ondelete="CASCADE", onupdate='CASCADE'),
primary_key=True),
sa.Column(
'post_id',
sa.ForeignKey('content.id',
nullable=False))
# Alchemy put the post_id from the abstract class on the superclass... wtf?
op.execute('''INSERT INTO action_on_post (id,post_id)
SELECT id,post_id FROM action''')
op.drop_column('action', 'post_id')
for name in post_tables.keys():
op.drop_table(name)
def downgrade(pyramid_env):
with context.begin_transaction():
for table_name, type_name in list(post_tables.items()):
op.create_table(
table_name,
sa.Column(
'id',
sa.ForeignKey('action.id',
primary_key=True))
op.execute('''INSERT INTO %s (id)
SELECT id FROM action WHERE "type" = '%s' ''' % (table_name, type_name))
op.add_column('action', sa.Column(
'post_id', onupdate='CASCADE')))
op.execute('''UPDATE action SET post_id = (
SELECT post_id FROM action_on_post WHERE action.id = action_on_post.id)''')
op.drop_table('action_on_post')
def downgrade(pyramid_env):
# with context.begin_transaction():
# op.add_column("content",sa.Column(
# "subject",sa.Unicode,server_default=""))
# op.add_column("content",sa.Column(
# "body",sa.UnicodeText,server_default=""))
from assembl import models as m
db = m.get_session_maker()()
with transaction.manager:
for target in ("subject", "body"):
r = db.execute(
"""select content.id,langstring_entry.value from content
join langstring_entry
on content.{0}_id = langstring_entry.langstring_id
join locale on langstring_entry.locale_id = locale.id
where locale.code not like '%-x-mtfrom-%'""".format(target))
for id, text in r:
if len(text):
db.execute("UPDATE content set %s = :txt WHERE id= :id" % (
(target,)), dict(txt=text, id=id))
mark_changed()
def upgrade(pyramid_env):
with context.begin_transaction():
op.add_column(
'idea', sa.Column(
'hidden', sa.SmallInteger, server_default='0'))
op.execute('UPDATE idea set hidden=0')
op.execute('ALTER TABLE idea ADD CHECK (hidden IN (0,1))')
op.add_column(
'idea', sa.Column(
'widget_id', sa.ForeignKey('widget.id')))
op.add_column(
'content', server_default='0'))
op.execute('UPDATE content set hidden=0')
op.execute('ALTER TABLE content ADD CHECK (hidden IN (0,1))')
# Do stuff with the app's models here.
from assembl import models as m
db = m.get_session_maker()()
with transaction.manager:
pass
def upgrade(pyramid_env):
with context.begin_transaction():
op.add_column('idprovider_agent_account',
sa.Column('temp_userid', sa.String(200)))
op.execute('UPDATE idprovider_agent_account SET temp_userid = userid')
op.drop_column('idprovider_agent_account', 'userid')
op.add_column('idprovider_agent_account',
sa.Column('userid', sa.String(200), nullable=False))
op.execute('UPDATE idprovider_agent_account \
SET userid = temp_userid' )
op.drop_column('idprovider_agent_account', 'temp_userid')
# Do stuff with the app's models here.
from assembl import models as m
db = m.get_session_maker()()
with transaction.manager:
pass
def upgrade(pyramid_env):
with context.begin_transaction():
op.drop_index("%s_%s_locale_UNQC_code" % (
config.get('db_schema'), config.get('db_user')))
op.add_column(
"locale",
sa.Column("temp_code", sa.String))
op.execute("UPDATE locale set temp_code = code")
with context.begin_transaction():
op.drop_column("locale", "code")
op.add_column(
"locale",
sa.Column("code", sa.String(32)))
op.execute("UPDATE locale set code = temp_code")
with context.begin_transaction():
op.drop_column("locale", "temp_code")
op.create_index(
'%s_%s_locale_UNQC_code' % (
config.get('db_schema'), config.get('db_user')),
'locale', ['code'], unique=True)
def downgrade(pyramid_env):
with context.begin_transaction():
op.drop_index("%s_%s_locale_UNQC_code" % (
config.get('db_schema'), sa.String(20)))
op.execute("UPDATE locale set code = temp_code")
with context.begin_transaction():
op.drop_column("locale", unique=True)
def upgrade(pyramid_env):
with context.begin_transaction():
op.create_table(
'idea_view_widget', sa.ForeignKey(
'widget.id', ondelete='CASCADE',
sa.Column(
'main_idea_view_id', sa.ForeignKey(
'idea_graph_view.id',
onupdate="CASCADE"),
nullable=True))
op.execute("""INSERT INTO idea_view_widget (id,main_idea_view_id)
SELECT id,main_idea_view_id FROM widget
WHERE widget_type = 'creativity'""")
op.execute("""UPDATE widget SET type = 'creativity_widget'
WHERE widget_type = 'creativity'""")
op.execute("""UPDATE widget SET type = 'multicriterion_voting_widget'
WHERE widget_type = 'vote'""")
op.drop_column('widget', 'widget_type')
op.drop_column('widget', 'main_idea_view_id')
def downgrade(pyramid_env):
with context.begin_transaction():
op.add_column('widget', sa.Column(
'widget_type', sa.String(120), nullable=False))
op.add_column('widget', sa.Column(
'main_idea_view_id', sa.ForeignKey(
'idea_graph_view.id',
onupdate="CASCADE"),
nullable=True))
op.execute("""UPDATE widget SET widget_type = 'creativity'
WHERE type = 'creativity_widget'""")
op.execute("""UPDATE widget SET widget_type = 'vote'
WHERE type = 'multicriterion_voting_widget'""")
op.execute("UPDATE widget SET widget_type ='widget'")
op.execute("""UPDATE widget SET main_idea_view_id = (
SELECT main_idea_view_id FROM idea_view_widget
WHERE idea_view_widget.id = widget.id)""")
op.drop_table('idea_view_widget')
def upgrade(pyramid_env):
with context.begin_transaction():
op.execute("""INSERT INTO idea_content_positive_link (id)
SELECT id FROM idea_content_widget_link""")
with context.begin_transaction():
try:
op.drop_constraint(
"idea_content_widget_link_idea_content_link_id_id",
"idea_content_widget_link")
except:
pass
with context.begin_transaction():
op.create_foreign_key(
"idea_content_widget_link_idea_content_positive_link_id_id",
"idea_content_widget_link", "idea_content_positive_link",
["id"], ["id"])
def upgrade(pyramid_env):
with context.begin_transaction():
op.add_column('idea',
server_default='idea:GenericIdeaNode'))
op.add_column('idea', sa.Column(
'last_modified', sa.types.TIMESTAMP))
op.add_column('idea_idea_link',
server_default='idea:InclusionRelation'))
op.drop_table("root_idea")
with context.begin_transaction():
op.execute('UPDATE idea SET "rdf_type" = "sqla_type"')
op.execute('UPDATE idea_idea_link SET "rdf_type" = "sqla_type"')
op.execute("UPDATE idea SET sqla_type = 'root_idea' WHERE sqla_type = 'assembl:RootIdea'")
op.execute("UPDATE idea SET sqla_type = 'idea' WHERE sqla_type <> 'root_idea'")
mark_changed()
with context.begin_transaction():
op.drop_column('idea_idea_link', 'sqla_type')
def downgrade(pyramid_env):
with context.begin_transaction():
op.add_column('idea_idea_link', sa.Column(
'sqla_type', nullable=False))
op.create_table('root_idea', sa.Column(
'id', sa.ForeignKey(
'idea.id',
primary_key=True))
with context.begin_transaction():
op.execute('UPDATE idea SET "sqla_type" = "rdf_type"')
op.execute('UPDATE idea_idea_link SET "sqla_type" = "rdf_type"')
op.execute("INSERT INTO root_idea (id) SELECT id FROM idea WHERE sqla_type ='assembl:RootIdea'")
mark_changed()
with context.begin_transaction():
op.drop_column('idea_idea_link', 'rdf_type')
op.drop_column('idea', 'last_modified')
def downgrade(pyramid_env):
schema, user = config.get('db_schema'), config.get('db_user')
with context.begin_transaction():
for tablename in tables:
index_name = "%s_%s_%s_UNQC_base_id_tombstone_date" % (
schema, user, tablename)
op.drop_constraint(index_name, tablename, schema=schema)
op.add_column(tablename, sa.Column('is_tombstone', server_default="0"))
# repopulate is_tombstone
with transaction.manager:
for tablename in tables:
op.execute('UPDATE %s set "is_tombstone" = (CASE WHEN "tombstone_date" IS NULL THEN 0 ELSE 1 END)' % (tablename,))
mark_changed()
with context.begin_transaction():
for tablename in tables:
op.drop_column(tablename, "base_id")
op.drop_column(tablename, "tombstone_date")
op.drop_table(tablename+ID_TABLE)
op.execute('ALTER TABLE %s ADD CHECK ("is_tombstone" IN (0,1))'%(tablename,))
def upgrade():
op.add_column('user', sa.Column('privacy_mode', sa.Boolean, default=True))
query = 'UPDATE "user" SET privacy_mode=true;'
op.execute(query)
def upgrade():
op.add_column('blogpost', sa.Column('published', default=False))
op.add_column('blogpost', sa.Column('updated', sa.Text,
default=make_timestamp))
sql = 'update blogpost set published=true'
op.execute(sql)
def upgrade():
# First,create column and fill all records with default value.
# To avoid integrity error,the constraint non-nullable will be set after that
op.add_column('app', sa.Column('featured', default=False))
query = 'UPDATE "app" SET featured=false;'
op.execute(query)
op.alter_column('app', 'featured', nullable=False)
query = 'UPDATE "app" SET featured=true WHERE app.id IN (SELECT app_id FROM FEATURED);'
op.execute(query)
op.drop_table('featured')
def downgrade():
op.create_table(
'featured', primary_key=True),
sa.Column('created', default=make_timestamp),
sa.Column('app_id', sa.ForeignKey('app.id'), unique=True)
)
query = 'INSERT INTO "featured" (app_id) SELECT id FROM "app" WHERE featured=true;'
op.execute(query)
op.drop_column('app', 'featured')
def upgrade():
op.add_column('user', sa.Column('newsletter_prompted', default=False))
query = 'UPDATE "user" SET newsletter_prompted=false;'
op.execute(query)
def upgrade():
query = '''UPDATE "user"
SET ckan_api=null
WHERE id IN (SELECT id
FROM (SELECT id,row_number() over (partition BY ckan_api ORDER BY id) AS rnum
FROM "user") t
WHERE t.rnum > 1);
'''
op.execute(query)
op.create_unique_constraint('ckan_api_uq', 'user', ['ckan_api'])
def upgrade():
query = 'UPDATE "user" SET locale=\'en\';'
op.execute(query)
op.alter_column('user', 'locale', nullable=False)
op.alter_column('user', 'privacy_mode', nullable=False)
def upgrade():
query = 'ALTER TABLE project ALTER COLUMN info TYPE JSON USING info::JSON;'
op.execute(query)
query = 'ALTER TABLE "user" ALTER COLUMN info TYPE JSON USING info::JSON;'
op.execute(query)
query = 'ALTER TABLE task ALTER COLUMN info TYPE JSON USING info::JSON;'
op.execute(query)
query = 'ALTER TABLE task_run ALTER COLUMN info TYPE JSON USING info::JSON;'
op.execute(query)
def downgrade():
query = 'ALTER TABLE project ALTER COLUMN info TYPE TEXT USING info::TEXT;'
op.execute(query)
query = 'ALTER TABLE "user" ALTER COLUMN info TYPE TEXT USING info::TEXT;'
op.execute(query)
query = 'ALTER TABLE task ALTER COLUMN info TYPE TEXT USING info::TEXT;'
op.execute(query)
query = 'ALTER TABLE task_run ALTER COLUMN info TYPE TEXT USING info::TEXT;'
op.execute(query)
def upgrade():
op.add_column('task_run', sa.Column(field, sa.String))
op.add_column('project', sa.Column('secret_key', sa.String))
query = 'update project set secret_key=md5(random()::text);'
op.execute(query)
def upgrade():
op.add_column('user', sa.Column('pro', default=False))
query = 'UPDATE "user" SET pro=false;'
op.execute(query)
def upgrade():
op.add_column('app', sa.BOOLEAN, default=True))
query = 'UPDATE app SET %s = True;' % field
op.execute(query)
def upgrade():
# Rename table name
query = 'ALTER TABLE app RENAME TO project;'
op.execute(query)
# Rename id sequence
query = 'ALTER SEQUENCE app_id_seq RENAME TO project_id_seq;'
op.execute(query)
# Rename foreign keys in other tables
query = 'ALTER TABLE blogpost RENAME app_id TO project_id;'
op.execute(query)
query = 'ALTER TABLE task RENAME app_id TO project_id;'
op.execute(query)
query = 'ALTER TABLE task_run RENAME app_id TO project_id;'
op.execute(query)
query = 'ALTER TABLE auditlog RENAME app_id TO project_id;'
op.execute(query)
query = 'ALTER TABLE auditlog RENAME app_short_name TO project_short_name;'
op.execute(query)
# Rename primary and unique keys
query = 'ALTER TABLE app_pkey RENAME TO project_pkey;'
op.execute(query)
query = 'ALTER TABLE app_name_key RENAME TO project_name_key;'
op.execute(query)
query = 'ALTER TABLE app_short_name_key RENAME TO project_short_name_key;'
op.execute(query)
# Rename foreign key constraints project table. NOTE: requires PostgreSQL 9.2 or above
query = 'ALTER TABLE project RENAME CONSTRAINT app_category_id_fkey TO project_category_id_fkey;'
op.execute(query)
query = 'ALTER TABLE project RENAME CONSTRAINT app_owner_id_fkey TO project_owner_id_fkey;'
op.execute(query)
# Rename foreign key constraints in other tables. NOTE: requires PostgreSQL 9.2 or above
query = 'ALTER TABLE blogpost RENAME CONSTRAINT blogpost_app_id_fkey TO blogpost_project_id_fkey;'
op.execute(query)
query = 'ALTER TABLE task RENAME CONSTRAINT task_app_id_fkey TO task_project_id_fkey;'
op.execute(query)
query = 'ALTER TABLE task_run RENAME CONSTRAINT task_run_app_id_fkey TO task_run_project_id_fkey;'
op.execute(query)
def downgrade():
# Rename table name
query = 'ALTER TABLE project RENAME TO app;'
op.execute(query)
# Rename id sequence
query = 'ALTER SEQUENCE project_id_seq RENAME TO app_id_seq;'
op.execute(query)
# Rename foreign keys in other tables
query = 'ALTER TABLE blogpost RENAME project_id TO app_id;'
op.execute(query)
query = 'ALTER TABLE task RENAME project_id TO app_id;'
op.execute(query)
query = 'ALTER TABLE task_run RENAME project_id TO app_id;'
op.execute(query)
query = 'ALTER TABLE auditlog RENAME project_id TO app_id;'
op.execute(query)
query = 'ALTER TABLE auditlog RENAME project_short_name TO app_short_name;'
op.execute(query)
# Rename primary and unique keys
query = 'ALTER TABLE project_pkey RENAME TO app_pkey;'
op.execute(query)
query = 'ALTER TABLE project_name_key RENAME TO app_name_key;'
op.execute(query)
query = 'ALTER TABLE project_short_name_key RENAME TO app_short_name_key;'
op.execute(query)
# Rename foreign key constraints app table. NOTE: requires PostgreSQL 9.2 or above
query = 'ALTER TABLE app RENAME CONSTRAINT project_category_id_fkey to app_category_id_fkey;'
op.execute(query)
query = 'ALTER TABLE app RENAME CONSTRAINT project_owner_id_fkey to app_owner_id_fkey;'
op.execute(query)
# Rename foreign key constraints in other tables. NOTE: requires PostgreSQL 9.2 or above
query = 'ALTER TABLE blogpost RENAME CONSTRAINT blogpost_project_id_fkey TO blogpost_app_id_fkey;'
op.execute(query)
query = 'ALTER TABLE task RENAME CONSTRAINT task_project_id_fkey TO task_app_id_fkey;'
op.execute(query)
query = 'ALTER TABLE task_run RENAME CONSTRAINT task_run_project_id_fkey TO task_run_app_id_fkey;'
op.execute(query)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。