Flask-sqlalchemy增删改查之(增加数据)
增加数据主要需要三步操作
- 创建模型对象
语法:模型对象 = 模型类(字段名=字段值) - 将模型对象添加到会话中
语法:组件对象.session.add(模型对象) - 提交会话
语法:组件对象.session.commit()
示例代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 相关配置
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/test'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ECHO'] = True
# 创建组件对象
db = SQLAlchemy(app)
# 构建模型类
class User(db.Model):
__tablename__ = 't_user'
id = db.Column(db.Integer, primary_key=True)
name = db.Column('username', db.String(20), unique=True)
age = db.Column(db.Integer, index=True)
@app.route('/')
def index():
"""增加数据"""
# 1.创建模型对象
user1 = User(name='zs', age=20)
# user1.name = 'zs'
# user1.age = 20
# 2.将模型对象添加到会话中
db.session.add(user1)
# 添加多条记录
# db.session.add_all([user1, user2, user3])
# 3.提交会话 (会提交事务)
# sqlalchemy会自动创建隐式事务
# 事务失败会自动回滚
db.session.commit()
return "index"
if __name__ == '__main__':
db.drop_all()
db.create_all()
app.run(debug=True)
注意点:
1.给模型对象设置数据 可以通过 初始化参数 或者 赋值属性 两种方式
2.session.add(模型对象) 添加单条数据到会话中,session.add_all(列表) 添加多条数据到会话中
3.这里的 会话 并不是 状态保持机制中的 session,而是 sqlalchemy 的会话。它被设计为数据操作的执行者, 从SQL角度则可以理解为是一个 加强版的数据库事务
4.sqlalchemy 会自动创建事务, 并将数据操作包含在事务中, 提交会话时就会提交事务
5.事务提交失败会自动回滚