Python Flask框架 -- ORM模型的CRUD操作(增删改查)

CRUD操作

使用ORM进行CRUD(Create、Read、Update、Delete)操作,需要先把操作添加到会话中,通过db.session可以获取到会话对象。会话对象只是在内存中,如果想要把会话中的操作提交到数据库中,需要调用db.session.commit()操作,如果想要把会话中的操作回滚,则可以通过db.session.rollback()实现。下面分别对CRUD进行讲解。

1.添加

使用ORM创建一条数据非常简单,先使用ORM模型创建一个对象,然后添加到会话中,再进行commit操作即可,示例代码如下。

# 添加
@app.route('/user/add')
def add_user():
    # 创建 ORM 对象
    user = User(username="宇宙核", password="123456")
    user1 = User(username="张三", password="111111")
    user2 = User(username="李四", password="222222")
    user3 = User(username="王五", password="333333")
    # 将 ORM 对象添加到 db.session 中
    db.session.add(user)
    db.session.add(user1)
    db.session.add(user2)
    db.session.add(user3)
    # 将 db.session 中的改变同步到数据库中
    db.session.commit()
    return "用户添加成功!"

然后打开数据库看看,看到下面那个即添加成功

2.查询

Read操作也就是查询。ORM模型都是继承自db.Model,db.Model内置的query属性上有许多方法,可以实现对ORM模型的查询操作。query上的方法可以分为两大类,分别是过滤方法以及提取方法。示例代码如下。

# 查询
@app.route('/user/query')
def query_user():
    # 1.get查找:根据主键查找,一次只能查一条,这里的主键是id
    # user = User.query.get(1)
    # print(f'{user.id}-{user.username}-{user.password}')
    # return '数据查找成功!'

    # 2.filter_by查找,查找多条数据
    users = User.query.filter_by(username='张三')
    print(type(users)) # 这里得到的users是一个Query类数组,可以用下标来获取数据
    for user in users:
        print(user.username)
    return '数据查找成功!'

3.修改

# 修改
@app.route('/user/update')
def update_user():
    user = User.query.filter_by(username='宇宙核').first()  # .first()拿到第一条数据
    user.password = '666666'
    db.session.commit()
    return "数据修改成功!"

修改前:

   

修改后:

4.删除

# 删除
@app.route('/user/delete')
def delete_user():
    # 1.查找
    user = User.query.get(1)
    # 2.从db.session中删除
    db.session.delete(user)
    # 3.将db.session中的修改同步到数据库中
    db.session.commit()
    return '数据删除成功!'

删除前:

删除后:

app.py 完整代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# MySQL所在的主机名或域名
HOSTNAME = '127.0.0.1'
# MySQL监听的端口号,默认3306
PORT = 3306
# 连接MySQL的用户名,用自己的
USERNAME = 'root'
# 连接MySQL的密码,用自己的
PASSWORD = '***'
# MySQL上创建的数据库名称
DATABASE = 'database_learn'

app.config[
    'SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4'

# 在app.config中设置好连接数据库的信息
# 然后使用SQLAlchemy(app)创建一个db对象
# SQLAlchemy会自动读取app.config中连接数据库的信息
db = SQLAlchemy(app)


class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    password = db.Column(db.String(100), nullable=False)


with app.app_context():  # 请求应用上下文
    db.create_all()  # 把所有的表同步到数据库中去


@app.route('/')
def hello_world():
    return 'Hello World!'


# 添加
@app.route('/user/add')
def add_user():
    # 创建 ORM 对象
    user = User(username="宇宙核", password="123456")
    user1 = User(username="张三", password="111111")
    user2 = User(username="李四", password="222222")
    user3 = User(username="王五", password="333333")
    # 将 ORM 对象添加到 db.session 中
    db.session.add(user)
    db.session.add(user1)
    db.session.add(user2)
    db.session.add(user3)
    # 将 db.session 中的改变同步到数据库中
    db.session.commit()
    return "用户添加成功!"


# 查询
@app.route('/user/query')
def query_user():
    # 1.get查找:根据主键查找,一次只能查一条,这里的主键是id
    # user = User.query.get(1)
    # print(f'{user.id}-{user.username}-{user.password}')
    # return '数据查找成功!'

    # 2.filter_by查找,查找多条数据
    users = User.query.filter_by(username='张三')
    print(type(users))  # 这里得到的users是一个Query类数组,可以用下标来获取数据
    for user in users:
        print(user.username)
    return '数据查找成功!'


# 修改
@app.route('/user/update')
def update_user():
    user = User.query.filter_by(username='宇宙核').first()  # .first()拿到第一条数据
    user.password = '666666'
    db.session.commit()
    return "数据修改成功!"


# 删除
@app.route('/user/delete')
def delete_user():
    # 1.查找
    user = User.query.get(1)
    # 2.从db.session中删除
    db.session.delete(user)
    # 3.将db.session中的修改同步到数据库中
    db.session.commit()
    return '数据删除成功!'


if __name__ == '__main__':
    app.run()
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用flask-sqlalchemy进行增删改查操作非常方便。下面是一些示例代码来说明如何使用flask-sqlalchemy进行增删改查操作: 1. 增加数据: 使用模型类的构造函数创建一个新的对象,并将其添加到数据库会话中,然后使用会话的`add()`方法将其添加到数据库中。 示例代码如下: ``` from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(120), unique=True) user = User(username='John', email='john@example.com') db.session.add(user) db.session.commit() ``` 2. 删除数据: 使用模型类的`query`属性和`filter_by()`方法来筛选要删除的数据,并使用会话的`delete()`方法将其从数据库中删除。 示例代码如下: ``` user = User.query.filter_by(username='John').first() db.session.delete(user) db.session.commit() ``` 3. 修改数据: 使用模型类的`query`属性和`filter_by()`方法来筛选要修改的数据,并通过修改对象的属性来更新数据。 示例代码如下: ``` user = User.query.filter_by(username='John').first() user.email = 'new_email@example.com' db.session.commit() ``` 4. 查询数据: 使用模型类的`query`属性和各种查询方法来检索数据,例如`all()`方法获取所有数据,`filter_by()`方法根据条件筛选数据等。 示例代码如下: ``` users = User.query.all() # 获取所有用户数据 user = User.query.filter_by(username='John').first() # 根据用户名获取用户数据 ``` 这些是使用flask-sqlalchemy进行增删改查操作的基本示例。你可以根据需要进行调整和扩展来实现特定的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值