Python Flask SQLAlchemy上下文介绍

简介: 如果您打算仅使用一个应用程序(app),则可以在很大程度上跳过本文。只要将您的应用程序传递给SQLAlchemy 构造函数,就可以设置好了。但是,如果要使用多个应用程序,或者要在要读取的功能中动态创建该应用程序。

Python Flask SQLAlchemy上下文介绍链接


如果您打算仅使用一个应用程序(app),则可以在很大程度上跳过本文。只要将您的应用程序传递给SQLAlchemy 构造函数,就可以设置好了。但是,如果要使用多个应用程序,或者要在要读取的功能中动态创建该应用程序。

如果您在函数中定义应用程序,但在SQLAlchemy全局对象中定义,则后者如何了解前者?答案是init_app()函数:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
    app = Flask(__name__)
    db.init_app(app)
    return app


它所做的是准备要使用的应用程序 SQLAlchemy。但是,这现在并未将SQLAlchemy对象绑定 到您的应用程序。为什么不这样做呢?因为可能创建了多个应用程序。

那么如何SQLAlchemy了解您的应用程序呢?您将必须设置一个应用程序上下文。如果您在Flask视图功能或CLI命令中进行操作,则会自动发生。但是,如果您在交互式外壳中工作,则必须自己进行操作(请参阅创建应用程序上下文)。

如果您尝试在应用程序上下文之外执行数据库操作,则会看到以下错误:

找不到应用程序。在视图函数内部工作或推送应用程序上下文。

简而言之,执行以下操作:

>>> from yourapp import create_app
>>> app = create_app()
>>> app.app_context().push()

或者,使用with语句来完成设置和拆卸:

def my_function():
    with app.app_context():
        user = db.User(...)
        db.session.add(user)
        db.session.commit()

Flask-SQLAlchemy内部的一些函数还可以选择接受应用程序以对其进行操作:

>>> from yourapp import db, create_app
>>> db.create_all(app=create_app())
相关文章
|
29天前
|
JSON 前端开发 API
使用Python和Flask构建简易Web API
使用Python和Flask构建简易Web API
|
29天前
|
存储 API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
|
29天前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
|
1月前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
79 2
|
1月前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
68 2
|
1月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
43 1
|
1月前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
构建RESTful APIs:使用Python和Flask
34 1
|
1月前
|
JSON API 数据格式
使用Python和Flask构建简单的Web API
使用Python和Flask构建简单的Web API
|
2月前
|
JSON API 数据格式
使用Python和Flask构建简单的RESTful API
【10月更文挑战第12天】使用Python和Flask构建简单的RESTful API
51 1
|
2月前
|
API 网络架构 Python
使用Python和Flask构建简单的RESTful API
【10月更文挑战第12天】使用Python和Flask构建简单的RESTful API
41 0
下一篇
DataWorks