Jupyter AI

18 Flask 从零教程系列:数据库操作之基本 CRUD 操作

📅 发表日期: 2024年8月10日

分类: 🌐Flask 入门

👁️阅读: --

在上一篇文章中,我们介绍了如何使用 SQLAlchemy 进行数据库操作,了解了基础的 ORM(对象关系映射)概念。本篇将继续深入数据库的操作内容,重点讲解基本的 CRUD(创建、读取、更新、删除)操作。后续将会讨论数据库迁移内容。因此,了解基本的 CRUD 操作对我们更加高效地进行数据库管理至关重要。

一、什么是 CRUD 操作?

CRUD 是指在数据库中进行的四种基本操作:

  • Create:创建新的记录
  • Read:读取已有的记录
  • Update:更新现有的记录
  • Delete:删除记录

在 Flask 中,我们将利用 SQLAlchemy 来实现这些操作,确保我们的数据持久化存储在数据库中。

二、环境准备

在开始之前,请确保你已经安装了 Flask 和 SQLAlchemy。你可以使用以下命令安装:

pip install Flask Flask-SQLAlchemy

接下来,我们将创建一个简单的 Flask 应用,并配置 SQLAlchemy。

创建 Flask 应用

首先,我们需要创建一个基本的 Flask 应用,结构如下:

/my_flask_app
│
├── app.py
└── models.py

app.py 文件

app.py 中,我们将设置 Flask 应用和数据库。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'  # 使用 SQLite 数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

from models import User  # 导入模型

models.py 文件

models.py 中,我们将定义我们的数据库模型。

from app import db

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)

    def __repr__(self):
        return f'<User {self.username}>'

三、基本的 CRUD 操作

创建(Create)

要创建新的记录,我们可以使用模型的实例化方法,并调用 db.session.add()db.session.commit() 来保存到数据库。

def create_user(username, email):
    new_user = User(username=username, email=email)
    db.session.add(new_user)
    db.session.commit()
    return new_user

读取(Read)

读取记录可以使用 query 方法。我们可以获取所有用户或者查找特定的用户。

def get_all_users():
    return User.query.all()

def get_user_by_id(user_id):
    return User.query.get(user_id)

更新(Update)

更新记录需要先查询到该记录,然后修改属性,最后提交更改。

def update_user(user_id, new_username, new_email):
    user = User.query.get(user_id)
    if user:
        user.username = new_username
        user.email = new_email
        db.session.commit()
    return user

删除(Delete)

删除记录同样需要查询到记录后进行删除。

def delete_user(user_id):
    user = User.query.get(user_id)
    if user:
        db.session.delete(user)
        db.session.commit()
    return user

四、示例应用

现在我们将这些 CRUD 方法整合到一个简单的 Flask 路由中,演示如何在应用中使用这些操作。

@app.route('/create/<username>/<email>')
def create(username, email):
    user = create_user(username, email)
    return f'Created user: {user.username}'

@app.route('/users')
def users():
    users = get_all_users()
    return '<br>'.join([user.username for user in users])

@app.route('/update/<int:user_id>/<new_username>/<new_email>')
def update(user_id, new_username, new_email):
    user = update_user(user_id, new_username, new_email)
    return f'Updated user: {user.username}' if user else 'User not found!'

@app.route('/delete/<int:user_id>')
def delete(user_id):
    user = delete_user(user_id)
    return f'Deleted user: {user.username}' if user else 'User not found!'

五、总结

在本篇中,我们成功实现了基本的 CRUD 操作,使用 Flask 与 SQLAlchemy 进行数据的持久化操作。通过创建、读取、更新和删除用户信息,我们可以更好地管理我们的数据。

下篇文章将继续深入数据库操作,我们将学习如何进行数据库迁移,帮助我们在开发过程中管理和变更数据库结构。感谢你的阅读,期待下次再见!