首页 > 解决方案 > db 在烧瓶文档中返回 NoneType

问题描述

def get_db():
    if 'db' not in g:
        g.db = sqlite3.connect(
            current_app.config['DATABASE'],
            detect_types=sqlite3.PARSE_DECLTYPES
        )
        g.db.row_factory = sqlite3.Row
        
        return g.db

你好,想学flask。目前正在浏览它的文档,刚刚完成了一个简单应用程序的教程。出于某种原因,我收到了这个错误。

AttributeError:“NoneType”对象没有“执行”属性

@bp.route('/')
def index():
    db = get_db()
    
    posts = db.execute(
        'SELECT p.id, title, body, created, author_id, username'
        ' FROM post p JOIN user u ON p.author_id = u.id'
        ' ORDER BY created DESC'
    ).fetchall()
    # returns template, with the posts as parameter
    return render_template('blog/index.html', posts=posts)

这是我遇到错误的地方。我还在其他代码上使用 get_db() 并且它可以工作,但由于某种原因索引它没有。

标签: pythonflask

解决方案


在您的函数中get_db,您尚未处理. 您可以做的是,您可以将您的 return 语句放在第一个if 检查之外(这确保在所有情况下都不是 None )。这样,如果它不存在,它将把它设置在那里,并且在所有情况下它都会返回。dbg'db' not in gg.dbdbgg.db


推荐阅读