在Tornado中,如何处理两个不同的查询并将结果发送到浏览器?

时间:2017-04-25 11:37:53

标签: python sqlite

这是龙卷风中的ColsHandler。

class ColsHandler(tornado.web.RequestHandler):
    def get(self):
        try:        
            x = int(self.get_argument('x'))
            y = int(self.get_argument('y'))
            v = int(self.get_argument('v'))
            crl = int(self.get_argument('crl'))
            crl_type = int(self.get_argument('crl_type'))

            DB.update_cols(x,y,v,crl,crl_type)
            data = DB.get_data()            

            self.write(json.dumps({'success': 1, 'data': data}))
        except Exception as e:
            raise e
            self.write(json.dumps({'success': 0}))

我收到参数并尝试处理它以便使用sqlite3提取适当的结果。加载首页时,此查询很重要。

def get_data(self):
    cols = self.get_cols()
    col_type = self.get_cols_type()

    x = cols['xs'][cols['x']]       #Customer_type
    y = cols['ys'][cols['y']]       #Region
    v = cols['vs'][cols['v']]       #Year

    crl_x = col_type['crl'][col_type['crl_x']]    #Corporate
    crl_y = col_type['crl_type'][col_type['crl_y']]    #Belgium

    conn = sqlite3.connect('test.db')
    cur = conn.cursor()
    cur.execute("""
        SELECT %s, %s, SUM( %s )
        FROM data
        GROUP BY %s , %s
    """ % ( x, y, v, x, y))
    data = {'Total': 0}
    rows = cur.fetchall()
    for row in rows:
        x = row[0]
        y = row[1]
        data['Total']+=row[2]
        data[x][y]=row[2]
    return data

我需要另一个查询来提取详细信息中的不同结果。所以我写了这个查询。

cur.execute("""
        SELECT %s, %s, %s, %s SUM( %s )
        FROM data
        GROUP BY %s , %s, %s, %s
    """ % ( x, y, crl_x, crl_y, v, x, y, crl_x, crl_y))

此查询结果对浏览器也很重要。因为我必须在加载文件时获取所有数据。

但是我不确定如何在一个get_data()函数中处理两个查询,因为我用cur.execute实现了查询。 我想知道我是否可以使用cur.execute两次。我认为那是错的。 那么如何实现两个查询并将其作为一个数据 参数获取并将发送到浏览器?

0 个答案:

没有答案