python实现mysql多条件查询筛选功能

目的:实现app列表筛选。

一、思路

原本是Java项目做的,感觉有些复杂,相反,Python代码较为简洁,改用Python实现。

要想实现筛选,就要想办法如何动态根据请求的条件写sql语句,第一步要考虑的是如何更好的封装请求到后台,以便于根据条件动态的拼接sql语句。

二、条件封装

首先将要所有要筛选的条件封装成json数据在请求里,形如:

{"MainCategories": "0","strategy": "0",
 "ManagementScale": "0","MaximumDrawdown":"0",
 "BusinessCity": "0","NumOfFund": "0",
 "NumberOfEmployees": "0","EstablishedTime": "0",
 "ContributedCapital": "0","PositiveRatio": "0"}

解释一下:"MainCategories": "0","MainCategories"代表单个条件(这只是我用到的,更具自己实际情况更换),"0"代表默认/不限,这是一个默认的情况。想要"MainCategories"的多个限制,可以传:"MainCategories": "1,2,3...:,这里1,2,3代表相应的限制,比如MainCategories这个条件是主要类型包含“不限”、“会员”、“非会员”、“高级会员”,那么0代表限制里的“不限”,1代表“会员”,2代表“非会员”,3代表“高级会员”,这样就可以完美的把想要的条件传到后台。其他条件原理一样。

三、条件处理

然后重点来了,再看一下如何获取json封装的条件并且处理。

我用的龙卷风框架(tornado),直接获取:

content = self.get_argument("content")//注:我请求的json数据的名字叫content。

此处封装一个方法,ReadJson(content):将json数据传过去。

方法内初始化sql条件:

sb = "" //注意,不是骂人,仿照java里的StringBuilder的缩写。

然后方法内首先要判断所传条件是否为空:

#若为空,直接返回空字符串,不做条件限制,直接查询全部。
if content == None or content =="":
   return sb

#若json条件不为空,python解析json转化为字典:

jsonObject = json.loads(client)//这里jsonObject是一个字典。包含key,value,这就好处理了。

//下班回家了,未完待续。。。

11.1

接下来的得到了包含我们传的条件的字典jsonObject,进行判断具体的条件,下面以第一个条件为例:

#判断“MainCategories”这个条件的值是否为空
if jsonObject is not None and jsonObject.get("MainCategories") is not None:
    #此时封装一个方法sqlPackage1()用来组装单个条件的sql
    mcSql = sqlPackage1(jsonObject.get("MainCategories"))
    #
    if not operator.eq(jsonObject.get("MainCategories"),"0"):
        sb1 = ConnectComponents(sb, mcSql)

//下班回家了,未完待续。。。

猜你喜欢

转载自blog.csdn.net/harry5508/article/details/83547009