def extract_modified_tables(module: ModuleType) -> Set[str]:
    '\n    提取由迁移脚本修改的表。\n\n    此函数使用一种简单的方法来查看迁移脚本的源代码以查找模式。它可以通过实际遍历AST来改进。\n    '
    tables: Set[str] = set()
    for function in {'upgrade', 'downgrade'}:
        source = getsource(getattr(module, function))
        tables.update(re.findall('alter_table\\(\\s*"(\\w+?)"\\s*\\)', source, re.DOTALL))
        tables.update(re.findall('add_column\\(\\s*"(\\w+?)"\\s*,', source, re.DOTALL))
        tables.update(re.findall('drop_column\\(\\s*"(\\w+?)"\\s*,', source, re.DOTALL))
    return tables
提取由迁移脚本修改的表。

此函数使用一种简单的方法来查看迁移脚本的源代码以查找模式。它可以通过实际遍历AST来改进。
def extract_modified_tables(module: ModuleType) -> Set[str]:
    '\n    提取由迁移脚本修改的表。\n\n    此函数使用一种简单的方法来查看迁移脚本的源代码以查找模式。它可以通过实际遍历AST来改进。\n    '
    tables: Set[str] = set()
    for function in {'upgrade', 'downgrade'}:
        source = getsource(getattr(module, function))
        tables.update(re.findall('alter_table\\(\\s*"(\\w+?)"\\s*\\)', source, re.DOTALL))
        tables.update(re.findall('add_column\\(\\s*"(\\w+?)"\\s*,', source, re.DOTALL))
        tables.update(re.findall('drop_column\\(\\s*"(\\w+?)"\\s*,', source, re.DOTALL))
    return tables