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通过floor函数舍弃小数位的方法
Mar 17 Python
python图像处理之反色实现方法
May 30 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
Python自动生产表情包
Mar 17 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
python的staticmethod与classmethod实现实例代码
Feb 11 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
python3学生名片管理v2.0版
Nov 29 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
Python异常处理例题整理
Jul 07 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
Pytest如何使用skip跳过执行测试
Aug 13 Python
python实现简单反弹球游戏
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 #Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
python 利用 PIL 将数组值转成图片的实现
python实现网络五子棋
python实现简易名片管理系统
Apr 11 #Python
python 自动化偷懒的四个实用操作
You might like
使用无限生命期Session的方法
2006/10/09 PHP
学习php笔记 字符串处理
2010/10/19 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
php根据年月获取季度的方法
2014/03/31 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
Python实现一个优先级队列的方法
2020/07/31 Python
python 爬取小说并下载的示例
2020/12/07 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
医学生临床实习自我评价
2014/03/07 职场文书
海飞丝的广告词
2014/03/20 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
基于PyQt5制作一个群发邮件工具
2022/04/08 Python