Add inspect_table.

In our current scheme of migrations, we reflect the current
sql schema into an SQLAlchemy schema. So let's have a tool
function for this.
This commit is contained in:
Elrond 2012-12-13 12:35:27 +01:00
parent a050e776c6
commit c4466cb4dc
2 changed files with 11 additions and 7 deletions

View File

@ -23,7 +23,7 @@ from sqlalchemy.exc import ProgrammingError
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from migrate.changeset.constraint import UniqueConstraint from migrate.changeset.constraint import UniqueConstraint
from mediagoblin.db.sql.migration_tools import RegisterMigration from mediagoblin.db.sql.migration_tools import RegisterMigration, inspect_table
from mediagoblin.db.models import MediaEntry, Collection, User from mediagoblin.db.models import MediaEntry, Collection, User
MIGRATIONS = {} MIGRATIONS = {}
@ -60,8 +60,7 @@ def add_wants_notification_column(db_conn):
def add_transcoding_progress(db_conn): def add_transcoding_progress(db_conn):
metadata = MetaData(bind=db_conn.bind) metadata = MetaData(bind=db_conn.bind)
media_entry = Table('core__media_entries', metadata, autoload=True, media_entry = inspect_table(metadata, 'core__media_entries')
autoload_with=db_conn.bind)
col = Column('transcoding_progress', SmallInteger) col = Column('transcoding_progress', SmallInteger)
col.create(media_entry) col.create(media_entry)
@ -115,8 +114,7 @@ def add_collection_tables(db_conn):
def add_mediaentry_collected(db_conn): def add_mediaentry_collected(db_conn):
metadata = MetaData(bind=db_conn.bind) metadata = MetaData(bind=db_conn.bind)
media_entry = Table('core__media_entries', metadata, autoload=True, media_entry = inspect_table(metadata, 'core__media_entries')
autoload_with=db_conn.bind)
col = Column('collected', Integer, default=0) col = Column('collected', Integer, default=0)
col.create(media_entry) col.create(media_entry)
@ -172,8 +170,7 @@ def fix_CollectionItem_v0_constraint(db_conn):
metadata = MetaData(bind=db_conn.bind) metadata = MetaData(bind=db_conn.bind)
CollectionItem_table = Table('core__collection_items', CollectionItem_table = inspect_table(metadata, 'core__collection_items')
metadata, autoload=True, autoload_with=db_conn.bind)
constraint = UniqueConstraint('collection', 'media_entry', constraint = UniqueConstraint('collection', 'media_entry',
name='core__collection_items_collection_media_entry_key', name='core__collection_items_collection_media_entry_key',

View File

@ -15,6 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
from mediagoblin.tools.common import simple_printer from mediagoblin.tools.common import simple_printer
from sqlalchemy import Table
class MigrationManager(object): class MigrationManager(object):
@ -261,3 +262,9 @@ def assure_migrations_table_setup(db):
if not MigrationData.__table__.exists(db.bind): if not MigrationData.__table__.exists(db.bind):
MigrationData.metadata.create_all( MigrationData.metadata.create_all(
db.bind, tables=[MigrationData.__table__]) db.bind, tables=[MigrationData.__table__])
def inspect_table(metadata, table_name):
"""Simple helper to get a ref to an already existing table"""
return Table(table_name, metadata, autoload=True,
autoload_with=metadata.bind)