【已解决】Python使用sql语句模糊查询报错:python中TypeError: not enough arguments for format string
2021-03-26-19:54:13
今天下午对世界疫情详情数据库进行模糊查询。
首先要明确一点:使用模糊查询就会用到WHERE语句中的LIKE语句,主要说一下在使用 % 的时候要注意的点:
在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%。
将在Python中执行的sql语句改为:
sql = "SELECT * FROM table_test WHERE value LIKE '%%%%%s%%%%'" % test_value
执行成功,print出SQL语句之后为:
SELECT * FROM table_test WHERE value LIKE '%%public%%'
Python在执行sql语句的时候,同样也会有%格式化的问题,
仍然需要使用%%来代替%。因此要保证在执行sql语句的时候格式化正确。
而不只是在sql语句(字符串)的时候正确。
1 sql = " SELECT * FROM world WHERE continent LIKE '%%%%%s%%%%'" %continent
在Python解析第一次之后sql语句会变成这样:
SELECT * FROM world WHERE continent LIKE '%%美洲%%'
这时候字符串两边的百分号是两个,原来是四个,但是在执行sql语句的时候,Python还会再解析一次%,所以原始字符串需要四个百分号
来表示一个百分号。
在sql语句里是支持对变量的插入的,比如:
1 sql_temp = " SELECT * FROM world WHERE c_name LIKE '"+c_name+"'"
1 ql = " SELECT * FROM world WHERE continent LIKE '%%%%%s%%%%'" %continent
总结几个sql常用语句:
我们查询的时候经常需要用到排序以及数据包含和不包含的筛选条件:
1 sql = 'SELECT province,city,confirm,heal,dead FROM details ' \
2 'where update_time=(select update_time from details order by update_time desc limit 1) '\
3 ' and city not in ("境外输入","地区待确认") '
按日期降序:
1 sql = " SELECT * FROM world WHERE c_name LIKE '%%%%%s%%%%' order by dt desc "%c_name
原文链接:https://blog.csdn.net/xinqing0909/article/details/80775234
好看请赞,养成习惯:) 本文来自博客园,作者:靠谱杨, 转载请注明原文链接:https://www.cnblogs.com/rainbow-1/p/14584158.html
欢迎来我的51CTO博客主页踩一踩 我的51CTO博客
文章中的公众号名称可能有误,请统一搜索:靠谱杨的秘密基地
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具