Example #1
0
def migrate_database(db, old_ver):
    log.info('Detected database version {}, updating to {}...'.format(old_ver, db_schema_version))
    migrator = MySQLMigrator(db)

    if old_ver < 2:
        migrate_varchar_columns(db, Account.username, Account.password, Account.email, Account.system_id,
                                Account.tutorial_state)
        migrate_varchar_columns(db, Event.entity_id, Event.description)

        db.create_table(Version)
        InsertQuery(Version, {Version.key: 'schema_version',
                              Version.val: 1}).execute()

        migrate(
            migrator.add_column('account', 'lures',
                                SmallIntegerField(null=True)),
            migrator.rename_column('event', 'type', 'entity_type')
        )

    if old_ver < 3:
        migrate(
            migrator.add_column('account', 'assigned_at',
                                DateTimeField(index=True, null=True))
        )
    if old_ver <4:
        migrate(
            migrator.add_column('account','reach_lvl30_datetime',
                                DateTimeField(index=True,null=True))
        )
    Version.update(val=db_schema_version).where(
        Version.key == 'schema_version').execute()
    log.info("Done migrating database.")
Example #2
0
def migrate01():
    MYSQL_DB.connect()
    migrator = MySQLMigrator(MYSQL_DB)
    with MYSQL_DB.atomic() as txn:
        migrate(migrator.add_column('result', 'file_type', Result.file_type),
                migrator.rename_column('result', 'is_corrupted', 'has_error'))
    MYSQL_DB.close()
Example #3
0
def create_tables(database: MySQLDatabase, migrations: bool = False):
    """Creates database tables
    
    Arguments:
        database {MySQLDatabase} -- MySQL database connection
    
    Keyword Arguments:
        migrations {bool} -- Run migrations (in this case only a rename of \
            a column is run) (default: {False})
    
    Raises:
        ValueError: Provide a MySQLDatabase class
    """
    if isinstance(database, MySQLDatabase):
        with database:
            database.create_tables(Base.__subclasses__(), safe=True)
            if migrations:
                from playhouse.migrate import MySQLMigrator, migrate
                migrator = MySQLMigrator(database)
                try:
                    migrate(
                        migrator.rename_column('data_source_data',
                                               'creation_date',
                                               'created_date'))
                except:
                    pass
    else:
        raise ValueError(
            "Please provide a database class that is an instance of \
                MySQLDatabase")
Example #4
0
from database.DatabaseConnector import Infraction

connection = MySQLDatabase(
    Configuration.get_master_var("DATABASE_NAME"),
    user=Configuration.get_master_var("DATABASE_USER"),
    password=Configuration.get_master_var("DATABASE_PASS"),
    host=Configuration.get_master_var("DATABASE_HOST"),
    port=Configuration.get_master_var("DATABASE_PORT"),
    use_unicode=True,
    charset="utf8mb4")

#make connection
migrator = MySQLMigrator(connection)

#run everything in a transaction so we don't turn the database into 💩 if something goes wrong
with connection.atomic():
    #fields to add
    end = TimestampField(null=True)
    active = BooleanField(default=True)
    #add fields
    migrate(
        migrator.add_column("infraction", "end", end),
        migrator.add_column("infraction", "active", active),
        migrator.rename_column("infraction", "timestamp", "start"),
    )

    #some infractions are not active anymore
    Infraction.update(
        active=False).where((Infraction.type == "Mute")
                            | (Infraction.type == "Kick")).execute()