Python使用sql语句对mysql数据库多条件模糊查询的思路详解


Posted in Python onApril 12, 2021
def find_worldByName(c_name,continent):
    print(c_name)
    print(continent)
    sql = " SELECT * FROM world WHERE  1=1 "
    if(c_name!=None):
        sql=sql+"AND ( c_name LIKE '%"+c_name+"%' )"
    if(continent!=None):
        sql=sql+" AND ( continent LIKE '%"+continent+"%') "
    sql=sql+" AND dt=(SELECT dt FROM world order by dt desc limit 1) order by confirm desc "

          # "AND continent LIKE '%%%%%s%%%%'" \
          # " order by dt desc " %(c_name,continent)
    # sql_temp = " SELECT * FROM world WHERE c_name LIKE '%"+c_name+"%' "
    res = query(sql)
    list= []
    for i in res:
        # print(i)
        list.append(i)
    return list;

背景:

页面的搜索框是有两个搜索条件,一个是国家,一个是大洲。

那么在数据库查询的时候就会出现问题,如果国家传的值是None那么使用AND连接的sql语句这个条件会被

整体判定为false,也就是另一个查询条件 “大洲 ”就会作废,为了防止参数出现这样的错误。需要在写sql语

句的时候对参数是否为空加一个判断条件,然后逐层添加sql语句。

思路:

首先使用开头的一个sql语句:

sql = " SELECT * FROM world WHERE 1=1 "

之后逐层判定参数是否为空,再拼接sql语句:

if(c_name!=None):
          sql=sql+"AND ( c_name LIKE '%"+c_name+"%' )"
      if(continent!=None):
          sql=sql+" AND ( continent LIKE '%"+continent+"%') "
      sql=sql+" AND dt=(SELECT dt FROM world order by dt desc limit 1) order by confirm desc "

还有一个地方需要注意:
sql语句传参数,参数是一个变量,有两种方式:
① 直接拼接到sql语句中:

var c_name="test"
sql_temp = " SELECT * FROM world WHERE c_name LIKE ' %"+c_name+"% '"

② 使用占位符%代替,在语句末尾再替换占位符:

sql = " SELECT * FROM world WHERE c_name LIKE '%%%%%s%%%%' AND continent LIKE '%%%%%s%%%%'" %(c_name,continent)

Python使用sql语句对mysql数据库多条件模糊查询的思路详解

Tomorrow the birds will sing.

到此这篇关于Python使用sql语句对mysql数据库多条件模糊查询的思路详解的文章就介绍到这了,更多相关Python mysql多条件模糊查询内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的包和模块实例
Nov 22 Python
用Python给文本创立向量空间模型的教程
Apr 23 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
python实践项目之监控当前联网状态详情
May 23 Python
Python整数对象实现原理详解
Jul 01 Python
Python turtle绘画象棋棋盘
Aug 21 Python
如何基于Python创建目录文件夹
Dec 31 Python
Python接口自动化判断元素原理解析
Feb 24 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
python如何在word中存储本地图片
Apr 07 Python
python中的plt.cm.Paired用法说明
May 31 Python
python实现简单反弹球游戏
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 #Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
You might like
针对初学PHP者的疑难问答(1)
2006/10/09 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
解析php常用image图像函数集
2013/06/24 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
JavaScript实现开关等效果
2017/09/08 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
初中生学习生活的自我评价
2013/11/20 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
小学一年级班主任工作经验交流材料
2015/11/02 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
python3 字符串str和bytes相互转换
2022/03/23 Python
MySQL数据库之存储过程 procedure
2022/06/16 MySQL