コード例 #1
0
ファイル: setup.py プロジェクト: ElecRei/ShinyMUD
def add_column(mod, col):
    # check for dependencies
    if mod.db_table_name not in EXISTING_TABLES:
        create_table(mod)
    else:
        if col in EXISTING_TABLES[mod.db_table_name]:
            return  # Column already exists!?
        column = None
        for c in mod.db_columns:
            if c.name == col:
                column = c
                break
        if not column:
            raise Exception("Trying to create undefined column!")
        if column.foreign_key:
            m, c = column.foreign_key
            M = model_list.get(m)
            if M.db_table_name not in EXISTING_TABLES:
                create_table(M)
            elif c not in EXISTING_TABLES[M.db_table_name]:
                add_column(M, c)
        alter_stmt = "ALTER TABLE %s ADD COLUMN %s" % (mod.db_table_name, str(column))
        cursor = World.get_world().db.conn.cursor()
        cursor.execute(alter_stmt)
        EXISTING_TABLES[mod.db_table_name].append(col)
コード例 #2
0
def add_column(mod, col):
    # check for dependencies
    if mod.db_table_name not in EXISTING_TABLES:
        create_table(mod)
    else:
        if col in EXISTING_TABLES[mod.db_table_name]:
            return  # Column already exists!?
        column = None
        for c in mod.db_columns:
            if c.name == col:
                column = c
                break
        if not column:
            raise Exception('Trying to create undefined column!')
        if column.foreign_key:
            m, c = column.foreign_key
            M = model_list.get(m)
            if M.db_table_name not in EXISTING_TABLES:
                create_table(M)
            elif c not in EXISTING_TABLES[M.db_table_name]:
                add_column(M, c)
        alter_stmt = 'ALTER TABLE %s ADD COLUMN %s' % (mod.db_table_name,
                                                       str(column))
        cursor = World.get_world().db.conn.cursor()
        cursor.execute(alter_stmt)
        EXISTING_TABLES[mod.db_table_name].append(col)
コード例 #3
0
ファイル: setup.py プロジェクト: ElecRei/ShinyMUD
def create_table(model):
    if model.db_table_name in EXISTING_TABLES:
        return
    # check for dependencies
    dependencies = [
        col.foreign_key for col in model.db_columns if col.foreign_key and col.foreign_key[0] != model.db_table_name
    ]
    for mod, col in dependencies:
        M = model_list.get(mod)
        if not M:
            raise Exception("Dependency on unknown model: %s" % str(mod))
        if M.db_table_name not in EXISTING_TABLES:
            create_table(M)
        elif col not in EXISTING_TABLES[M.db_table_name]:
            add_column(M, col)
    # generate create table string
    table_string = []
    table_string.append("CREATE TABLE IF NOT EXISTS %s (" % model.db_table_name)
    columns_string = []
    for col in model.db_columns:
        columns_string.append(str(col))
    for extra in model.db_extras:
        columns_string.append(unicode(extra))
    table_string.append(",".join(columns_string))
    table_string.append(")")
    create_stmt = "".join(table_string)
    cursor = World.get_world().db.conn.cursor()
    cursor.execute(create_stmt)
    EXISTING_TABLES[model.db_table_name] = [col.name for col in model.db_columns]
コード例 #4
0
def create_table(model):
    if model.db_table_name in EXISTING_TABLES:
        return
    # check for dependencies
    dependencies = [
        col.foreign_key for col in model.db_columns
        if col.foreign_key and col.foreign_key[0] != model.db_table_name
    ]
    for mod, col in dependencies:
        M = model_list.get(mod)
        if not M:
            raise Exception('Dependency on unknown model: %s' % str(mod))
        if M.db_table_name not in EXISTING_TABLES:
            create_table(M)
        elif col not in EXISTING_TABLES[M.db_table_name]:
            add_column(M, col)
    # generate create table string
    table_string = []
    table_string.append('CREATE TABLE IF NOT EXISTS %s (' %
                        model.db_table_name)
    columns_string = []
    for col in model.db_columns:
        columns_string.append(str(col))
    for extra in model.db_extras:
        columns_string.append(unicode(extra))
    table_string.append(','.join(columns_string))
    table_string.append(')')
    create_stmt = "".join(table_string)
    cursor = World.get_world().db.conn.cursor()
    cursor.execute(create_stmt)
    EXISTING_TABLES[model.db_table_name] = [
        col.name for col in model.db_columns
    ]