面试题答案
一键面试- 配置SQLAlchemy连接到MySQL数据库:
- 首先安装所需库,
pip install flask sqlalchemy
。 - 在Flask应用中配置如下:
- 首先安装所需库,
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 配置MySQL连接字符串,格式为 mysql+pymysql://用户名:密码@主机地址:端口/数据库名
app.config['SQLALCHEMY_DATABASE_URI'] ='mysql+pymysql://root:password@127.0.0.1:3306/mydb'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
- 使用事务确保数据一致性:
- 在Flask - SQLAlchemy中,使用
db.session
来管理事务。例如在用户注册并创建相关关联数据场景下:
- 在Flask - SQLAlchemy中,使用
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
# 假设有关联表
related_data = db.relationship('RelatedData', backref='user', lazy=True)
class RelatedData(db.Model):
id = db.Column(db.Integer, primary_key=True)
data = db.Column(db.String(200))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
@app.route('/register', methods=['POST'])
def register():
try:
# 创建用户
new_user = User(username='new_user')
db.session.add(new_user)
# 创建关联数据
new_related_data = RelatedData(data='some data', user=new_user)
db.session.add(new_related_data)
# 提交事务
db.session.commit()
return '注册成功'
except Exception as e:
# 出现异常回滚事务
db.session.rollback()
return f'注册失败: {str(e)}'
finally:
# 关闭会话
db.session.close()
在上述代码中,try
块内进行数据库操作,若操作成功则commit
提交事务;若出现异常,rollback
回滚事务,确保数据一致性。finally
块用于关闭会话。