Flask和SQLAlchemy的模型操作:增删改查方法详解

数据库 其他数据库
在Flask应用程序中,SQLAlchemy可以轻松地与Flask集成,这使得创建和管理数据库变得更加容易。在下面的讲解中,我们将学习如何使用Flask和SQLAlchemy来建立,查询,修改和删除数据库模型。

Flask是一个轻量级的Web框架,它被广泛用于构建Web应用程序。SQLAlchemy是一个功能强大的Python ORM(对象关系映射器),它允许我们通过Python类来映射数据库表格。在Flask应用程序中,SQLAlchemy可以轻松地与Flask集成,这使得创建和管理数据库变得更加容易。在下面的讲解中,我们将学习如何使用Flask和SQLAlchemy来建立,查询,修改和删除数据库模型。

建立Flask和SQLAlchemy的模型

要建立Flask和SQLAlchemy的模型,我们需要执行以下步骤:

配置数据库连接:在Flask应用程序中,我们需要配置数据库连接。我们可以使用SQLite,MySQL或PostgreSQL等数据库,但在这里,我们将使用SQLite。我们可以通过以下代码来配置SQLite数据库连接:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
db = SQLAlchemy(app)

建立模型类:接下来,我们需要定义我们的数据库模型类。这些类将定义数据库表格中的列和关系。例如,我们可以定义一个名为User的类,它将表示数据库表格中的用户:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

在这里,我们定义了一个User类,它继承自db.Model类,这意味着它是一个SQLAlchemy模型类。我们定义了四个列:id,username,email和password。id是主键列,username和email是唯一的,password不能为null。

创建数据库表格:一旦我们定义了模型类,我们需要使用以下代码来创建数据库表格:

db.create_all()

这将创建所有定义的模型类的相关数据库表格。

查询模型

在Flask和SQLAlchemy中,我们可以使用以下方法来查询模型:

查询所有模型:

users = User.query.all()

这将返回所有的用户模型对象。

查询单个模型:

user = User.query.filter_by(username='john').first()

这将返回一个用户名为'john'的用户模型对象。

使用复杂查询:

users = User.query.filter(User.email.endswith('@example.com')).all()

这将返回所有电子邮件以'@example.com'结尾的用户模型对象。

修改模型

在Flask和SQLAlchemy中,我们可以使用以下方法来修改模型:

修改单个属性:

user = User.query.filter_by(username='john').first()
user.email = 'newemail@example.com'
db.session.commit()

修改多个属性:

user = User.query.filter_by(username='john').first()
user.email = 'newemail@example.com'
user.password = 'newpassword'
db.session.commit()

这将修改用户名为'john'的用户的电子邮件和密码,并将更改保存到数据库。

删除模型

在Flask和SQLAlchemy中,我们可以使用以下方法来删除模型:

删除单个模型:

user = User.query.filter_by(username='john').first()
db.session.delete(user)
db.session.commit()

这将删除用户名为'john'的用户模型对象,并将更改保存到数据库。

删除多个模型:

users = User.query.filter_by(email='oldemail@example.com').all()
for user in users:
    db.session.delete(user)
db.session.commit()

这将删除所有电子邮件为'oldemail@example.com'的用户模型对象,并将更改保存到数据库。

完整的代码示例如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

# create database tables
db.create_all()

# add a new user to the database
user = User(username='john', email='john@example.com', password='password')
db.session.add(user)
db.session.commit()

# query all users
users = User.query.all()
print(users)

# query a single user
user = User.query.filter_by(username='john').first()
print(user)

# modify a user's email
user = User.query.filter_by(username='john').first()
user.email = 'newemail@example.com'
user.password = 'newpassword'
db.session.commit()

# delete a user
user = User.query.filter_by(username='john').first()
db.session.delete(user)
db.session.commit()

在这个示例中,我们首先定义了一个User模型类,并使用db.create_all()方法创建了数据库表格。接着,我们添加了一个新用户到数据库中,并使用User.query.all()和User.query.filter_by()方法查询了用户。然后,我们修改了用户的电子邮件和密码,并使用db.session.commit()方法将更改保存到数据库。最后,我们使用db.session.delete()方法删除了用户,并使用db.session.commit()方法将更改保存到数据库。

以上是使用Flask和SQLAlchemy建立模型,查询模型,修改模型和删除模型的基本步骤。需要注意的是,在修改和删除模型时,我们需要使用db.session.commit()方法将更改保存到数据库。

责任编辑:姜华 来源: 今日头条
相关推荐

2019-11-07 15:39:36

数据库MySQL文章

2012-04-19 10:06:16

ibmdw

2009-11-13 15:54:26

ADO.NET数据库操

2023-02-27 07:37:56

Curl操作SQL

2023-06-07 08:18:25

2021-07-05 09:24:06

MySQL SQL 语句数据库

2024-11-18 00:22:34

2020-10-29 08:39:45

JSONJava对象

2021-08-09 13:34:14

Python开发数据

2023-05-18 07:58:27

2012-03-21 09:49:42

Java

2012-04-12 09:23:15

达梦数据库

2009-11-12 09:18:40

ASP.NET MVC

2024-08-29 08:58:30

JPA编写数据操

2022-08-01 09:44:07

架构MySQL数据库

2023-06-12 08:09:01

FlaskSQLAlchemy

2024-09-02 09:26:28

2021-01-18 14:04:49

java监控操作

2016-10-13 19:16:28

Python编程语言mysql

2021-08-19 07:25:02

数据库Flask插件
点赞
收藏

51CTO技术栈公众号