コード例 #1
0
def constraint_ddl(tables, engine, drop=False):

    output = []

    for table in tables:
        for constraint in table.constraints:

            # Avoid duplicating primary key constraint definitions (they are
            # included in CREATE TABLE statements).
            if not isinstance(constraint, PrimaryKeyConstraint):

                if not drop:
                    ddl = AddConstraint(constraint)
                else:
                    ddl = DropConstraint(constraint)

                output.append(str(ddl.compile(dialect=engine.dialect)).strip())
                output.append(';\n\n')

    return output
def create_table_constraints_ddl(tableObj, engine, debug_level=-1):
    ddl_text = ''
    constraints = tableObj.constraints
    for constraint in constraints:
        ddl_obj = AddConstraint(constraint)
        try:
            ddl_string = str(ddl_obj.compile(dialect=engine.dialect)).strip()
        except Exception as e:
            # if e.message.find('it has no name')<0:
            #     print(e)
            ddl_string = ''

        if ddl_string:
            if not ddl_text:
                ddl_text = ddl_string
            else:
                ddl_text = ddl_text + '\n' + ddl_string
    ddl_string = ddl_text
    if int(debug_level) > 0:
        msg = f"table [[{tableObj.name}]] create_table_constraints_DDL: [{ddl_string}]"
        log_message(msg)
    return ddl_string
コード例 #3
0
def constraint_ddl(tables, engine, drop=False):

    output = []

    for table in tables:
        constraints = sorted(list(table.constraints), key=lambda k: k.name,
                             reverse=drop)
        for constraint in constraints:

            # Avoid duplicating primary key constraint definitions (they are
            # included in CREATE TABLE statements).
            if not isinstance(constraint, PrimaryKeyConstraint):

                if not drop:
                    ddl = AddConstraint(constraint)
                else:
                    ddl = DropConstraint(constraint)

                output.append(str(ddl.compile(dialect=engine.dialect)).strip())
                output.append(';\n\n')

    return output