Python Flask 和数据库系统交互
Python Flask 和数据库系统交互
全栈网页应用程序需要结构化数据的持久性,因此使用数据库的知识和经验是网页开发的先决条件。Python 和Flask 可以与大多数SQL或无SQL数据库系统集成。Python本身附带了一个名为sqlite3的轻量级SQLite数据库。我们将使用SQLite,因为它不需要设置单独的数据库服务器,并且非常适合小规模应用程序。对于生产环境,我们必须使用其他数据库系统,如MySQL、MariaDB或PostgreSQL。为了访问数据库系统并与之交互,我们将使用Flask扩展之一FlaskSQLAlchemy。Flask-SQLAlchemy扩展基于Python的SQLAlchemy库,使该库可用于我们的网页应用程序。SQLAlchemy库提供了一个对象关系映射器(ORM),这意味着它将我们的数据库表映射到Python对象。ORM库的使用不仅加快了开发周期,而且提供了在不更改代码的情况下切换底层数据库系统的灵活性。因此,我们建议使用 SQLAlchemy
或类似的库来处理数据库系统。
要从我们的应用程序与任何数据库系统交互,我们需要像往常一样创建Flask应用程序实例。下一步是使用数据库位置的URL(在SQLite3的情况下是一个文件)配置应用程序实例。创建应用程序实例后,我们将通过将其传递给应用程序实例来创建 SQLAlchemy
实例。使用 SQLite 等数据库时,我们只需在第一次初始化数据库。它可以从Python程序启动,但我们不赞成这种方法,以避免每次启动应用程序时都重置数据库。建议使用 SQLAlchemy
实例从命令行初始化数据库一次。在代码示例之后,我们将讨论初始化数据库的确切步骤。
为了说明SQLAlchemy库在我们的网页应用程序中的使用,我们将创建一个简单的应用程序来添加、列出和删除数据库表中的学生对象。以下是应用程序的示例代码,用于初始化Flask应用程序和数据库实例(SQLAlchemy实例),以及创建 Student
类的 Model
对象:
# 与数据库交互第一部分:创建和删除列表对象
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///student.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class Student(db.Model):
id