📜  flask sqlalchemy 更新行 - SQL (1)

📅  最后修改于: 2023-12-03 15:00:46.711000             🧑  作者: Mango

Flask SQLAlchemy 更新行 - SQL

在Flask web应用程序中,Flask SQLAlchemy是一个强大的SQLAlchemy扩展,它简化了在应用程序中使用SQLAlchemy的过程。在应用程序中,经常需要更新数据库中的一行或多行数据。这篇文章介绍如何使用Flask SQLAlchemy更新行。

安装Flask SQLAlchemy
pip install Flask-SQLAlchemy
更新单行数据

首先,我们需要从数据库中获取要更新的数据。假设我们有一个名为User的数据表,包含idname两个列。以下是获取并更新id为1的用户的代码片段:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

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

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

@app.route('/')
def update_user():
    user = User.query.filter_by(id=1).first()
    user.name = 'Alice'
    db.session.commit()
    return 'User updated'

if __name__ == '__main__':
    app.run()

在上面的代码中,我们首先定义了User模型类,然后从数据库中查询id为1的用户并将其名称更改为Alice,最后提交更改。

请注意,db.session.commit()在 Flask SQLAlchemy 中是非常重要的,因为它将更改写入数据库。如果不使用该函数,则更改将不会保存到数据库。

更新多行数据

有时候我们需要修改多行数据。以下是如何使用Flask SQLAlchemy批量更新数据的代码片段:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

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

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    active = db.Column(db.Boolean)

@app.route('/')
def update_users():
    users = User.query.filter_by(active=True).all()
    for user in users:
        user.active = False
    db.session.commit()
    return f'{len(users)} users updated'

if __name__ == '__main__':
    app.run()

在上面的代码中,我们首先检查活动用户,然后将它们的状态更改为False,最后提交更改。注意使用all()方法返回匹配所有条件的所有行。

结论

在Flask应用程序中,Flask SQLAlchemy是一种非常有用的工具,可以帮助您管理和更新数据库中的数据。无论是更新单个还是多个行,Flask SQLAlchemy都能很好地处理。