python - 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() 并且它可以工作,但由于某种原因索引它没有。
解决方案
在您的函数中get_db
,您尚未处理. 您可以做的是,您可以将您的 return 语句放在第一个if 检查之外(这确保在所有情况下都不是 None )。这样,如果它不存在,它将把它设置在那里,并且在所有情况下它都会返回。db
g
'db' not in g
g.db
db
g
g.db
推荐阅读
- mysql - mysql.service:主进程退出,code=exited,status=1/FAILURE
- python - 使用 Python 的未定义引用
- bash - 如何在 golang 中运行 shell 命令
- xml - 如何在 XSLT 3.0 中重命名多重属性名称?
- reactjs - 为什么子组件没有在反应中呈现
- json - POSTrequest 上的 Postman SpringBoot RestApi 状态码 415
- python - 如何使用 Django 在网站中实现图像识别系统?
- ruby-on-rails - 将参数传递给 new_path 并增加创建计数
- c++ - C++:在函数指针向量中存储和调用函数指针
- amazon-web-services - 我应该为移动应用选择 DAX 的 API 网关缓存吗?