首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex从Python中的SQL查询中删除别名?

问使用regex从Python中的SQL查询中删除别名?
EN

Stack Overflow用户
提问于 2019-06-07 02:49:46
回答 1查看 532关注 0票数 1

我试图从SQL查询中提取表名,但在使用诸如sqlparse之类的Python SQL解析器时遇到了一些困难。问题出在别名上--解析器会混淆真实的表名及其别名,只返回别名。

我的目标不是编辑解析器,而是使用正则表达式预先清除SQL查询中的别名,以便解析器可以执行其工作。

我也不需要将查询中的所有别名调用重命名为原始名称,因为此解析的上下文只需要表名,而不需要其他名称。

为了使其显式,给定以下查询(以字符串形式):

代码语言:javascript
复制
SELECT * FROM schema.table alias

正则表达式将返回:"SELECT * FROM schema.table“-然后将其发送以进行进一步处理以获取表名。如果没有别名,例如:

代码语言:javascript
复制
SELECT * FROM schema2.table2

然后,它会原封不动地返回字符串。

我该怎么做呢?有没有其他的python sql解析器能够通过别名来处理这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2019-06-07 03:09:08

这对你有效吗?它搜索包含字符串FROM schema.table alias的行,删除别名

代码语言:javascript
复制
import re
string = """
SELECT * FROM schema.table alias
SELECT * FROM schema.table
"""
remove_table_alias = r'(FROM \w+\.\w+)(\s\w+)$'
print(re.sub(remove_table_alias, r'\1', string, flags=re.MULTILINE))

输出:

代码语言:javascript
复制
SELECT * FROM schema.table 
SELECT * FROM schema.table
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56483450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档