python 前端参数不定的级联查询实现

前端参数不定情况下的级联查询实现。

下拉选单有的可能选了,有的可能没选。

对应后端一般需要写多个方法来进行对应。

但通过字符串sql拼接可以巧妙的,用一个方法应对参数个数不定情况下的查询。

以下为前端传不定个数参数给后端,后端django通过sql拼接,实现不定参数的级联查询。         

关键语句:

operator = "AND operator='{0}'".format(cleaned_data['operator'])

class AlarmTable(APIMeta):
    def __init__(self, request):
        super(AlarmTable, self).__init__(request)
        self.form_class = forms.AlarmTable

    def handle(self, cleaned_data):
        start_time = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(cleaned_data['start_time'], '%Y-%m-%d %H:%M:%S'))
        end_time = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(cleaned_data['end_time'], '%Y-%m-%d %H:%M:%S'))
        operator = ''
        service_name = ''
        area_name = ''
        level = ''
        components = ''
        biz_name = ''
        if cleaned_data['operator'] != '':
            operator = "AND operator='{0}'".format(cleaned_data['operator'])
        if cleaned_data['service_name'] != '':
            service_name = "AND service_name='{0}'".format(cleaned_data['service_name'])
        if cleaned_data['area_name'] != '':
            area_name = "AND area='{0}'".format(cleaned_data['area_name'])
        if cleaned_data['level'] != '':
            level = "AND important_level='{0}'".format(cleaned_data['level'])
        if cleaned_data['component'] != '':
            components = "AND components='{0}'".format(cleaned_data['component'])
        if cleaned_data['biz_name'] != '':
            biz_name = "AND biz_name='{0}'".format(cleaned_data['biz_name'])

        sql = """SELECT dtEventTime,service_name,operator,biz_name,area,important_level,err_content,components
                 FROM test_table
               WHERE dtEventTime>='{0}' AND dtEventTime<='{1}' {2} {3} {4} {5} {6} {7} order by dtEventTime desc limit 5000
        """.format(start_time, end_time, operator, service_name, area_name, level, components, biz_name)
        data_rst = bk_data.send_request(sql)
        return data_rst

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据实战演练

spring boot使用JDBCTemplate访问Mysql

根据个人喜好选择配置文件的类型,在这里我选择配置application.yml,主要对datasource进行一些配置说明。

21410
来自专栏祝威廉

MLSQL-Console 账号体系设计

MLSQL Console 的账号权限体系设计就是用户自己玩,没有超级管理员。设计的角色有:

11920
来自专栏vivo互联网技术

大数据 | SparkSQL连接查询中的谓词下推处理(二)

在《SparkSql连接查询中的谓词下推处理(一)》中,我们介绍了一些基本的概念,并对内连接查询时的一些基本下推规则进行了分析。

13620
来自专栏网站制作

pageadmin CMS 验证sql用户名和密码的正确性

第一个箭头指向的就是服务器名称,如果用ip无法连接sql时候,可以用服务器名称来连接。

15110
来自专栏Web技术布道师

Redis 真得那么好用吗?

Redis是一个开源的底层使用C语言编写的Key-Value存储数据库。可用于缓存、事件发布订阅、高速队列等场景。而且支持丰富的数据类型:string(字符串)...

18730
来自专栏编程坑太多

『互联网架构』软件架构-分布式之大型网站的演变过程(28)

1.session集群问题 2.数据一致性问题 3.数据瓶颈(一旦流量上来了,虽然应用做了集群,但是数据库没有做集群,还是一个主库),这时候要考虑主从数据库。

9920
来自专栏程序生活

大数据入门与实战-Hive操作与SQL 查询

Hive的SQL基本上和我们原先的MYSQL的SQL查询效果差不多,下面是一些实例:

15340
来自专栏Web技术布道师

【译】MySQL挑战:建立10万连接

本文的目的是探索一种在一台MySQL服务器上建立10w个连接的方法。我们要建立的是可以执行查询的连接,而不是10w个空闲连接。

10530
来自专栏bisal的个人杂货铺

《Oracle Concept》第二章 - 16

按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。 本文主题:第二章《Tables and Tabl...

6520
来自专栏Web技术布道师

MySQL -- 全表扫描

51230

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励