当使用 Flask 框架时,ORM(对象关系映射)是连接数据库的一个好选择。 SQLAlchemy 是一个流行的 ORM 库,它提供了方便的 ORM 接口,可以让我们更轻松地在 Flask 中使用数据库。
下面我们来讲解一下 Flask 框架使用 ORM 连接数据库的方法示例。
环境设置
在使用 Flask 和 SQLAlchemy 之前,我们需要安装 Python 以及 Flask 和 SQLAlchemy。可以使用以下命令安装 Flask 和 SQLAlchemy:
pip install flask
pip install sqlalchemy
在安装完毕后,我们可以导入这两个库:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
配置 Flask 应用
下一步是配置 Flask 应用。具体地说,我们需要:
- 创建 Flask 实例
- 设置数据库 URI
- 创建 SQLAlchemy 实例
- 将 SQLAlchemy 与 Flask 应用连接起来
首先,我们创建 Flask 实例:
app = Flask(__name__)
接下来,我们需要设置数据库 URI。URI(Uniform Resource Identifier)是一个指向数据库的 URL,它可以唯一地识别一个数据库。
在本例中,我们使用 MySQL 数据库。在设置数据库 URI 时,需要包括用户名,密码,主机名,端口和数据库名。示例代码如下:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@hostname:port/databasename'
请注意,这里的“username”和“password”应替换为实际的用户名和密码,而“hostname”和“port”应替换为实际的主机名和端口。最后,“databasename”应替换为实际的数据库名。
接下来,我们需要创建 SQLAlchemy 实例并将其与 Flask 应用连接起来:
db = SQLAlchemy(app)
定义模型
接下来,我们需要定义一个模型来表示数据库中的表。在本例中,我们将创建一个名为“User”的表,其中包含“id”和“name”字段。
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
这里,“db.Model”是 SQLAlchemy 中的基类,表示一个模型类。然后,我们定义了两个类变量:“id”和“name”,并使用了两个元组来设置它们的属性。
在我们定义完模型之后,我们需要执行下面的命令来创建数据库表:
db.create_all()
实现数据操作
在我们成功定义了数据库模型之后,我们可以开始实现对数据库的操作。下面是两个示例:
示例 1:插入和查询数据
在这个示例中,我们将向数据库中添加一条数据,然后从数据库中查询该数据,并将其打印到控制台上。
# 创建 User 对象
user = User(name='wupc')
# 将 User 对象添加到数据库
db.session.add(user)
db.session.commit()
# 从数据库中查询 User 对象
user = User.query.filter_by(name='wupc').first()
# 打印 User 对象的属性
print(user.id)
print(user.name)
在这个示例中,我们首先创建了一个具有“name”属性的 User 对象。然后,我们使用“db.session.add()”将其添加到数据库中,并使用“db.session.commit()”提交事务。
接下来,我们使用“User.query.filter_by()”查询具有“name”属性的 User 对象,并将其保存在一个名为“user”的变量中。最后,我们打印了“user”的 ID 和名称属性。
示例 2:更新和删除数据
在这个示例中,我们将从数据库中查询一条数据,然后更新其“name”属性。然后,我们将该数据从数据库中删除。
# 从数据库中查询 User 对象
user = User.query.filter_by(name='wupc').first()
# 更新 User 对象的属性
user.name = 'wupc2'
db.session.commit()
# 从数据库中删除 User 对象
db.session.delete(user)
db.session.commit()
在这个示例中,我们首先使用“User.query.filter_by()”查询具有“name”属性的 User 对象,并将其保存在一个名为“user”的变量中。
然后,我们更新了“user”的“name”属性,使用“db.session.commit()”提交了事务。最后,我们使用“db.session.delete()”从数据库中删除了“user”的对象,并再次使用“db.session.commit()”提交了事务。
手动关闭数据库连接
在使用 SQLAlchemy 连接数据库时,我们需要手动关闭连接以防止资源泄漏。我们可以在 Flask 应用关闭时自动关闭 SQLAlchemy 连接。
@app.teardown_appcontext
def shutdown_session(exception=None):
db.session.remove()
在这个代码片段中,“@app.teardown_appcontext”叫做装饰器,可以在 Flask 应用上下文结束时调用其下面的函数。“shutdown_session()”函数将关闭 SQLAlchemy 连接。
以上就是 Flask 框架使用 ORM 连接数据库的方法示例。通过这些步骤,我们可以很容易地在 Flask 应用程序中使用 SQLAlchemy 连接到数据库,并执行各种 CRUD 操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flask框架使用orm连接数据库的方法示例 - Python技术站