18 Flask 从零教程系列:数据库操作之基本 CRUD 操作
在上一篇文章中,我们介绍了如何使用 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 进行数据的持久化操作。通过创建、读取、更新和删除用户信息,我们可以更好地管理我们的数据。
下篇文章将继续深入数据库操作,我们将学习如何进行数据库迁移,帮助我们在开发过程中管理和变更数据库结构。感谢你的阅读,期待下次再见!