当前位置: 首页 > news >正文

网站建设公司教程做网站月度总结

网站建设公司教程,做网站月度总结,做旅游网站需要的背景,网站做seo第一步1.介绍 在某些场景下#xff0c;我们可能需要从一个复杂的SQL语句中提取对应的表名称#xff0c;在这样的场景下#xff0c;我们如果在python中处理的话#xff0c;就需要用到SQLparse这个库。 SQLparse 是一个用于解析 SQL 查询语句的 Python 库。它可以将复杂的 SQL 查询…1.介绍 在某些场景下我们可能需要从一个复杂的SQL语句中提取对应的表名称在这样的场景下我们如果在python中处理的话就需要用到SQLparse这个库。 SQLparse 是一个用于解析 SQL 查询语句的 Python 库。它可以将复杂的 SQL 查询转换为易于分析的结构并提供了许多功能来检索、修改和分析 SQL 查询中的元素。其中一个常见的用例是从查询中提取表名称。 2.安装 SQLparse 首先确保您已经安装了 SQLparse。您可以使用 pip 进行安装 pip install sqlparse3.解析 SQL 查询语句 使用 SQLparse 解析 SQL 查询语句非常简单。只需导入库并将查询语句作为字符串传递给 sqlparse.parse() 函数。 4.提取表名称 提取表名称通常涉及到遍历解析后的 SQL 结构以查找关键元素这些元素通常表示表名称。SQLparse 使用了一种抽象语法树AST的结构可以轻松访问查询中的各个部分。 示例代码 下面是一个示例代码演示如何使用 SQLparse 从简单的SQL 查询语句中得到表名称 import sqlparse # 定义一个 SQL 查询语句 sql_query SELECT * FROM customers WHERE age 30; # 解析 SQL 查询语句 parsed_query sqlparse.parse(sql_query) # 遍历解析出表名 table_names[] for stmt in parsed_query:for token in stmt.tokens:if isinstance(token, sqlparse.sql.Identifier) :table_name token.get_real_name()table_names.append(table_name) print(table_names) 代码运行后结果如下 在上述代码中我们首先定义了一个 SQL 查询语句。然后我们使用 SQLparse 解析查询语句将其转换为 AST 结构。接下来我们遍历 AST 结构以查找关键元素例如表名称。但是敏感和聪明的你会发现用上述代码在实际场景中时会出现各种各样的问题。 5.实际场景中的问题 5.1 无法处理嵌套类型的语句 如在处理下面这个SQL语句时无法提取嵌套在里面的表名称 SELECT o.id, o.name FROM orders oLEFT JOIN products p ON o.product_code p.product_codeWHERE o.customer_id IN (SELECT id FROM customers WHERE country USA)OR p.category Electronics简单的嵌套无法识别 5.2 无法处理重命名表的语句 如下面的SQL语句会出现提取错误的情况 with co as (SELECT o.id, o.name FROM orders oLEFT JOIN products p ON o.product_code p.product_codeWHERE o.customer_id IN (SELECT id FROM customers WHERE country USA)OR p.category Electronics) select * from co提取结果如下 5.3 多个表名重复时的去重问题 在处理基础的SQL语句时会出现多个相同的表 SELECT o.id, o.name FROM orders oLEFT JOIN orders o2 on o.id o2.pre_id处理后截图如下 5.4 其他问题 有一些场景下还会提取出字段信息夹杂其中的情况或者有一些存在表空间的情况会进行重命名等等听到这里你是不是觉得处理起来令人头大别慌接着往下看。 6.终极解决方案 6.1 解决思路 经过本人的一番思考后采用sqlparse模块和re模块相结合后惊喜的发现能够灵活的从绝大部分的sql语句中正确地提取出表名称来。 解决思路如下 1.先将sql语句进行规范2.获取left和join关键字后面的表名3.对表名进行各种处理4.去重后输出结果 6.2 实际代码 import sqlparse import redef format_sql(sql_content):将sql语句进行规范化并去除sql中的注释输入和输出均为字符串parse_strsqlparse.format(sql_content,reindentTrue,strip_commentsTrue)return parse_strdef extract_table_names(sql_query):从sql中提取对应的表名称输出为列表table_names set()# 解析SQL语句parsed sqlparse.parse(sql_query)# 正则表达式模式用于匹配表名table_name_pattern r\bFROM\s([^\s\(\)\,])|\bJOIN\s([^\s\(\)\,])# with 子句判断with_pattern rwith\s(\w)\sasremove_with_name[]# 遍历解析后的语句块for statement in parsed:# 转换为字符串statement_str str(statement).lower()#将字符串中的特殊语法置空statement_str re.sub((substring|extract)\s*\(((.|\s)*?)\),,statement_str)# 查找匹配的表名matches re.findall(table_name_pattern, statement_str, re.IGNORECASE)for match in matches:# 提取非空的表名部分for name in match:#if name and name not in not_contain_list:if name :# 对于可能包含命名空间的情况只保留最后一部分作为表名table_name name.split(.)[-1]#去除表名中的特殊符号table_name re.sub((||\|;),,table_name)table_names.add(table_name)#处理特殊的with语句if with in statement_str:match re.search(with_pattern, statement_str)if match:result match.group(1)remove_with_name.append(result)table_list list(table_names)#移除多余的表名if remove_with_name:table_list list(set(table_list)-set(remove_with_name))return table_list sql_querywith co as (SELECT o.id, o.name FROM orders oLEFT JOIN products p ON o.product_code p.product_codeWHERE o.customer_id IN (SELECT id FROM customers WHERE country USA)OR p.category Electronics) select * from co parse_strformat_sql(sql_query) table_names extract_table_names(parse_str) # 打印提取的表名 print(table_names)通过运行上述的代码成功提取到多有表名称 7 后记 以上就是如何从一个复杂的SQL语句中来提取表名的例子欢迎各位踊跃尝试勇于纠错一起完善代码让更多的人收益一起加油~
http://www.w-s-a.com/news/969755/

相关文章:

  • 网站建设方维网站标题title为什么不能频繁的改
  • 网站建设如何上传文件wordpress列表自定义数据表
  • 摄影课程自学网站科技项目的类型有
  • 未来最紧缺的十大专业长春seo顾问
  • 为什么点不开网站公关公司是做什么的
  • wordpress主要菜单如何对网站页面进行优化
  • 建设银行深分行圳招聘网站建立互联网公司网站
  • 湖南做旅游网站哪家最好html5手机网站免费模板
  • 云服务器上放多个网站wordpress ping大全
  • 以下属于网站的管理 更新 维护如何才能做好品牌网站建设
  • 国家工业和信息化部网站备案系统网站建设设计费用
  • 网站建设利弊宁波高端网站建设联系方式
  • 网站订票策划方案郑州代做网站
  • 免费的网站加速器注册公司邮箱
  • 千助网站建设网站整站程序
  • 自学建网站做网站优化访问网站出现目录
  • 济南网站建设是什么百度官网登录入口手机版
  • net快速建站西宁手机网站建设
  • 网站浏览器不兼容怎么办软件系统开发大概多少钱
  • 网站建设哪个公司最好shift wordpress
  • 公司网站建设功能介绍室内设计学习
  • 做网站策划容易遇到哪些问题沈阳公司网站制作
  • 做php网站都用框架吗网站备案当面核验拍摄照片
  • 泉州企业自助建站兰州最好的互联网公司
  • 监察部门网站建设方案网站seo技术教程
  • 个人网站制作源代码下载品牌建设部
  • 网站备案需要准备什么文创产品设计思路
  • 网站开发书籍推荐青岛城阳新闻最新消息
  • 秦皇岛网站建设服务聊城做网站的公司资讯
  • 30岁转行做网站设计丰涵网站建设