Python错误:先执行execute()

2 投票
1 回答
3374 浏览
提问于 2025-04-16 15:11

当我尝试运行这个视图/函数时,我遇到了一个错误,提示 execute() first

def homepage(request, parem1, parem2):
    # open sql connection
    cursor = connection.cursor()

    if parem1 == 'p':

        if parem2 == 'all':   
            cursor.execute((" SELECT eventname, id, party, DATE_FORMAT(eventdate, GET_FORMAT(DATE,'EUR')) FROM mainapp_eventdetails ORDER BY eventdate DESC "))
        else:
            cursor.execute((" SELECT eventname, id, party, DATE_FORMAT(eventdate, GET_FORMAT(DATE,'EUR')) FROM mainapp_eventdetails WHERE party = '" + parem2 + "' ORDER BY eventdate DESC "))

    else:

        if parem2 == 'all':   
            cursor.execute((" SELECT eventname, id, party, DATE_FORMAT(eventdate, GET_FORMAT(DATE,'EUR')) FROM mainapp_eventdetails ORDER BY eventdate DESC "))
        elif parem2 == 'APR':
            cursor.execute((" SELECT eventname, id, party, DATE_FORMAT(eventdate, GET_FORMAT(DATE,'EUR')) FROM mainapp_eventdetails WHERE eventdate between '2011-4-1' AND '2011-5-1' ORDER BY eventdate DESC "))

    datalist = [memedetails for memedetails in cursor.fetchall()]

    # close sql connection
    cursor.close()
    connection.close()

    # group by eventdate
    datalistsorted = []

    # i dont like how this part depends on the sequence of columns retrieved in the above SQL. 
    for k, g in groupby(datalist, key=lambda x:x[3]):
        datalistsorted.append((k,[(i[0],i[1],i[2]) for i in g]))

    return render_to_response('base.html', {'eventlist': datalistsorted, 'parem2': parem2.upper()})

但是如果我把这一行 elif parem2 == 'APR': 改成 else:,它就能正常工作了。

这是为什么呢?我该怎么才能让我的 elif 正常工作?(下面还有更多条件,但为了简单起见我省略了)

1 个回答

3

看起来你遇到了一个情况,就是parem1不是'p',而且parem2也不是'APR'。在这种情况下,你没有进行任何执行的调用。

也许你应该把if/else的部分限制在只定义要执行的字符串上,设置一个默认的情况,然后在if块外面进行执行的调用。

撰写回答