Flask-SQLAlchemy 是一个基于 Flask 的 ORM 扩展,它使得在 Flask 应用中使用 SQL 数据库变得非常容易。在 Flask-SQLAlchemy 中,视图指的是对数据库表的特定查询方式的封装。在 Flask-SQLAlchemy 中定义视图可以使用 SQLAlchemy 的 SQL 表达式,它们可以被像普通表一样查询。
在 Flask-SQLAlchemy 中,我们可以使用
@app.route()
装饰器来定义路由,用于接收用户请求。同时,我们还可以使用
@app.route()
装饰器中的参数来定义 HTTP 请求的方法,例如
GET
、
POST
等。
视图函数可以直接返回字符串、模板渲染结果、JSON 数据等,也可以返回 SQL 查询结果。在 Flask-SQLAlchemy 中,我们可以通过定义模型类来操作数据库,模型类是指用 Python 类来描述数据库表结构的类。
下面是一个简单的 Flask-SQLAlchemy 视图的示例代码:
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
def __repr__(self):
return '<User %r>' % self.name
@app.route('/')
def index():
users = db.session.query(User).all()
return render_template('index.html', users=users)
if __name__ == '__main__':
app.run()
在上面的代码中,我们定义了一个 User
模型类,包含了一个 id
字段和一个 name
字段。在 index
视图函数中,我们使用 db.session.query()
查询了所有的用户数据,并将查询结果传递给了模板引擎,最终返回了一个渲染后的 HTML 页面。
需要注意的是,在 Flask-SQLAlchemy 中,每个视图函数需要一个单独的数据库会话(session),可以使用 db.session
属性来获取一个会话对象,然后使用这个对象进行数据库操作。另外,需要在程序入口处通过 db.create_all()
方法来创建所有的数据表。
总之,Flask-SQLAlchemy 提供了非常方便的 ORM 扩展,使得在 Flask 应用中使用 SQL 数据库变得非常容易。我们可以通过定义模型类和视图函数来操作数据库,从而实现各种业务逻辑。