Python:正则re.sub实现SQL命名占位符替换

简介: Python:正则re.sub实现SQL命名占位符替换

Python 使用mysql-connector-python 和 PyMySQL 模块操作数据库的时候,发现需要使用%s 占位符 和 %(key)s命名占位符 ,书写起来比较费事。


支持 ? 和:key 作为占位符的数据库操作库还挺多的

Python的SQLite3模块、PHP的Laravel、THinkPHP


这种写法比较简洁,可以少敲键盘


只需要使用re模块对sql进行替换就可以达到效果


# -*- coding: utf-8 -*-
import re
sql = "insert into user (name, age) values (:name, :age)"
compile_sql = re.sub(r":(?P<key>\w+)", r"%(\g<key>)s", sql)
print(compile_sql)
# insert into user (name, age) values (%(name)s, %(age)s)



使用?占位符


sql = "insert into user (name, age) values (?, ?)"
print(sql.replace("?", "%s"))
# insert into user (name, age) values (%s, %s)

当然,如果不想自己封装数据库操作,可以直接使用MyQuery

Github: https://github.com/mouday/MyQuery


参考

https://docs.python.org/3/library/re.html#re.sub


相关文章
|
16天前
|
SQL
sql语句加正则 简化查询
sql语句加正则 简化查询
15 0
sql语句加正则 简化查询
|
2月前
|
网络协议 IDE Java
Python 为什么推荐蛇形命名法?
Python 为什么推荐蛇形命名法?
13 0
|
3月前
|
SQL 存储 数据库
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
Python 的安全性和测试:什么是 SQL 注入攻击?如何防范 SQL 注入?
|
4月前
|
存储 IDE 开发工具
【python原理】Python 3里面print为什么改成函数?为什么会有个奇怪的“...”对象?为什么推荐蛇形命名法?等常见问题
【python原理】Python 3里面print为什么改成函数?为什么会有个奇怪的“...”对象?为什么推荐蛇形命名法?等常见问题
49 0
|
8月前
|
SQL 关系型数据库 数据库连接
【Python入门系列】第七篇:Python数据库操作和SQL语言
本文介绍了使用Python进行数据库操作的基本知识,包括连接数据库、执行SQL查询和更新操作等。同时,还介绍了SQL语言的基本语法和常用的查询语句。通过学习本文,读者将能够使用Python与各种类型的数据库进行交互,并掌握基本的SQL语言知识。
116 0
|
6月前
|
SQL 关系型数据库 MySQL
Python 与 MySQL 进行增删改查的操作以及防止SQL注入
Python 与 MySQL 进行增删改查的操作以及防止SQL注入
132 0
|
1月前
|
SQL 数据可视化 数据处理
使用SQL和Python处理Excel文件数据
使用SQL和Python处理Excel文件数据
54 0
|
7月前
|
SQL 应用服务中间件 nginx
python技术面试题(十二)--SQL注入、项目部署
python技术面试题(十二)--SQL注入、项目部署
|
8天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
17 0
|
1月前
|
SQL 关系型数据库 API
Star 4.7k!高效SQL Parser!纯Python开发!自称目前最快的纯Python SQL解析器!
Star 4.7k!高效SQL Parser!纯Python开发!自称目前最快的纯Python SQL解析器!