Python Flask: 使用数据库记录字段更新日志
要记录一张表中字段的更新情况,可以在每次更新字段时,将更新的信息存储到另外一张记录表中。
下面是一个使用Python Flask框架的示例代码:
from flask import Flask, request
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
age = db.Column(db.Integer)
class UpdateRecord(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
field_name = db.Column(db.String(50))
old_value = db.Column(db.String(50))
new_value = db.Column(db.String(50))
@app.route('/update_user', methods=['POST'])
def update_user():
user_id = request.form.get('user_id')
field_name = request.form.get('field_name')
new_value = request.form.get('new_value')
user = User.query.get(user_id)
old_value = getattr(user, field_name)
setattr(user, field_name, new_value)
db.session.commit()
update_record = UpdateRecord(user_id=user_id, field_name=field_name, old_value=old_value, new_value=new_value)
db.session.add(update_record)
db.session.commit()
return 'User updated successfully'
if __name__ == '__main__':
db.create_all()
app.run()
在上面的示例中,我们定义了一个User模型和一个UpdateRecord模型,分别表示用户和字段更新记录。在/update_user路由中,我们首先获取要更新的用户ID、字段名和新值。然后,我们通过User.query.get(user_id)获取要更新的用户对象,并使用getattr(user, field_name)获取字段的旧值。
接下来,我们使用setattr(user, field_name, new_value)更新用户对象的字段值,并使用db.session.commit()提交更改。然后,我们创建一个UpdateRecord对象,将用户ID、字段名、旧值和新值存储到UpdateRecord表中,并使用db.session.add(update_record)和db.session.commit()保存更改。
这样,每次更新用户字段时,都会在UpdateRecord表中记录更新的信息。您可以根据需要扩展该示例以满足您的需求。
原文地址: https://www.cveoy.top/t/topic/o8c3 著作权归作者所有。请勿转载和采集!