如何使用sqlparse获取sql语句中使用到的表名
时间: 2023-12-01 20:03:52 浏览: 154
使用sqlparse获取SQL语句中使用到的表名需要遍历SQL语法树中的Token,并根据Token类型和内容来判断是否为表名。以下是获取SQL语句中使用到的表名的示例代码:
```python
import sqlparse
def get_table_names(sql):
table_names = set()
parsed_sql = sqlparse.parse(sql)[0]
for token in parsed_sql.tokens:
if token.ttype is None and '.' in token.value:
# 判断是否为表名
table_names.add(token.value.split('.')[0])
elif token.ttype is sqlparse.tokens.Keyword and token.value.upper() == 'FROM':
# 判断是否为FROM关键字
idx = parsed_sql.token_index(token) + 1
while idx < len(parsed_sql.tokens):
# 判断是否为表名
if parsed_sql.tokens[idx].ttype is None and '.' not in parsed_sql.tokens[idx].value:
table_names.add(parsed_sql.tokens[idx].value)
elif parsed_sql.tokens[idx].ttype is sqlparse.tokens.Keyword:
break
idx += 1
return list(table_names)
```
以上代码中,我们首先使用sqlparse.parse()方法解析SQL语句,然后遍历语法树中的Token,并根据Token的类型和内容来判断是否为表名。具体来说,我们判断Token的类型是否为None,以及Token的内容是否包含'.',如果是则认为是表名。同时,我们还判断Token是否为FROM关键字,如果是则从FROM关键字后的Token中查找表名。最终,我们将所有找到的表名存储在一个set对象中,并将其转化为列表返回。
使用以上代码,我们可以方便地获取SQL语句中使用到的表名。
阅读全文