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之dict()的操作方法
Sep 24 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
Python理解递归的方法总结
Jan 28 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
python递归法实现简易连连看小游戏
Mar 25 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
python实现简易淘宝购物
Nov 22 Python
Django之腾讯云短信的实现
Jun 12 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
Django Form常用功能及代码示例
Oct 13 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
Feb 06 Python
Python数据可视化之绘制柱状图和条形图
May 25 Python
python实现简单反弹球游戏
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 #Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
You might like
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
python实现K最近邻算法
2018/01/29 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
python 实现兔子生兔子示例
2019/11/21 Python
Python计算IV值的示例讲解
2020/02/28 Python
python zip()函数的使用示例
2020/09/23 Python
python中的unittest框架实例详解
2021/02/05 Python
中专毕业生自我鉴定范文
2013/11/09 职场文书
部队领导证婚词
2014/01/12 职场文书
运动会稿件300字
2014/02/14 职场文书
高中军训感言200字
2014/02/23 职场文书
影子教师研修方案
2014/06/14 职场文书
人民调解协议书范本
2014/10/11 职场文书
自主招生英文自荐信
2015/03/25 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android