sqlparse获取表血缘案例 python代码实现发我
时间: 2023-11-22 18:53:04 浏览: 106
下面是一个使用sqlparse库获取表血缘关系的Python代码示例:
```python
import sqlparse
def get_table_names(sql_text):
"""
从 SQL 语句中提取所有表名
"""
table_names = []
parsed = sqlparse.parse(sql_text)
for statement in parsed:
for token in statement.tokens:
if token.ttype is None:
continue
if 'FROM' in token.value.upper() or 'JOIN' in token.value.upper():
for identifier in token.get_identifiers():
if identifier.has_alias():
table_names.append(identifier.get_alias())
else:
table_names.append(identifier)
elif 'UPDATE' in token.value.upper():
table_names.append(token)
return table_names
if __name__ == '__main__':
sql_text = 'SELECT t1.col1, t2.col2 FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id WHERE t1.col3 = "test"'
table_names = get_table_names(sql_text)
print('Table names:', table_names)
```
这个函数将返回所有在`FROM`或`JOIN`关键字之后找到的表名。当`UPDATE`语句出现时,它也会返回更新的表名。
你可以根据需要扩展此函数,以便在SQL查询中获取更多信息。
阅读全文