python瓶框架超出最大递归深度

时间:2018-01-20 21:43:49

标签: python html bottle sqlitestudio

我正在尝试为我的网络应用添加路径但由于某种原因发生了最大递归深度错误

def runSQL(sql):
    db = sqlite3.connect('zadanie.db')
    c = db.cursor()
    c.execute(sql)
    data = c.fetchall()
    db.commit()
    c.close()
    return data  

def Subjects(): 
    sql = "SELECT (here is my query)" 
    data = runSQL(sql) 
    return data

@app.route('/subjects')
def Subjects():
    sub = template('look4.html', rows=Subjects())              
    return sub

我试图将递归限制设置为更高的数字,但随后出现错误分段错误11 我将不胜感激任何调试建议:)

1 个答案:

答案 0 :(得分:2)

问题不在于递归深度。如您所见,您定义了两个名为Subject的函数。

因此,Python将覆盖第一个第二个。现在第二个呼叫(你认为)前一个。但由于Subjects被覆盖,它将再次重定向到该函数,因此:

@app.route('/subjects')
def Subjects():
    sub = template('look4.html', rows=Subjects())
    return sub

将陷入无限递归。解决方案是简单地重命名两个中的一个(可能最好重命名第一个),并更改调用,如:

def subjects_query(): 
    sql = "SELECT (here is my query)" 
    data = runSQL(sql) 
    return data

@app.route('/subjects')
def subjects():
    sub = template('look4.html', rows=subjects_query())              
    return sub

此外的惯例是Python中的函数是带有下划线的小写,因此您最好将第二个函数重命名为subjects(就像我在这里所做的那样)。