本文用以下图片进行示例:
增加数据:
# 增加数据
user = User( id=5, name="hello", email="100@100.com", passward="123456", role_id=2)
# 添加到本地
db.session.add(user)
# 连接数据库,添加进MySQL中
db.session.commit()
结果如下:
删除数据:
# 删除数据
user = User.query.get(2)
db.session.delete(user)
db.session.commit()
结果如下:
修改数据(第一种方法,先查询再修改):
# 修改数据(第一种方法)先查询再修改
user = User.query.get(5)
print(user.name)
user.id = 2
user.name = "lisi"
user.passward = 234
db.session.add(user)
db.session.commit()
结果如下:
修改数据(第二种方法,查询并修改):
# 改数据(第二种方法)查询并修改
user = User.query.filter_by(name="lisi").update({"name":"hello","passward":123456})
db.session.commit()
结果如下:
完整代码如下:
先运行db_demo.py程序:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
class Config(object):
"""配置参数"""
# sqlalchemy的配置参数
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/db_python"
# 设置sqlalchemy自动更新跟踪数据库
SQLALCHEMY_TRACK_MODIFICATIONS = True
# 连接数据库
app.config.from_object(Config)
# 创建数据库aqlalchemy工具对象
db = SQLAlchemy(app)
# 创建数据库模型类
class Role(db.Model):
"""用户角色/身份表"""
__tablename__ = "tbl_roles"
id = db.Column(db.Integer, primary_key=True) # 整型的主键,会默认设置为自增主键
name = db.Column(db.String(32), unique=True)
users = db.relationship("User", backref="role") # 当role.users调用时,指明调用的是User的模型类;brakrefk可以用于反推,当user.role时,将上层对象进行打印
def __repr__(self):
"""重写显示方法,定义之后,可以让显示对象的时候更直观"""
return "Role object: name=%s"%self.name
# 创建数据库模型类
class User(db.Model):
"""用户表"""
__tablename__ = "tbl_users" # 指明数据库的表名
id = db.Column(db.Integer, primary_key=True) # 整型的主键,会默认设置为自增主键
name = db.Column(db.String(64), unique=True)
email = db.Column(db.String(128), unique=True)
passward = db.Column(db.String(128))
role_id = db.Column(db.Integer, db.ForeignKey("tbl_roles.id")) # 使Role类和User类建立联系
def __repr__(self):
"""重写显示方法,定义之后,可以让显示对象的时候更直观"""
return "User object: name=%s"%self.name
@app.route("/")
def start():
return "This is the beginning"
if __name__ == '__main__':
# app.run(host="127.0.0.1", port=8000, debug=True)
# 清除数据库里的所有数据, 谨慎使用
db.drop_all()
# 创建所有的表
db.create_all()
# 创建对象
role1 = Role(name="admin")
# session记录对象任务
db.session.add(role1)
# 提交任务到数据库中
db.session.commit()
# 创建对象
role2 = Role(name="stuff")
# session记录对象任务
db.session.add(role2)
# 提交任务到数据库中
db.session.commit()
# 添加数据
user_1 = User(name="zhangsan", email="123@123.com", passward="123", role_id=role1.id)
user_2 = User(name="lisi", email="234@234.com", passward="234", role_id=role1.id)
user_3 = User(name="wangwu", email="345@345.com", passward="345", role_id=role2.id)
user_4 = User(name="zhaoliu", email="456@456.com", passward="456", role_id=role2.id)
# 以列表的形式一次保存多条数据
db.session.add_all([user_1, user_2, user_3, user_4])
db.session.commit()
调试程序test.py如下:
# 从de_demo.py导入全部
from db_demo import *
if __name__ == '__main__':
pass
"""
可以取消注释再运行代码
"""
# 修改数据(第一种方法)先查询再修改
# user = User.query.get(5)
# print(user.name)
# user.id = 2
# user.name = "lisi"
# user.passward = 234
# db.session.add(user)
# db.session.commit()
# 改数据(第二种方法)查询并修改
# user = User.query.filter_by(name="lisi").update({"name":"hello","passward":123456})
# db.session.commit()
# 删除数据
# user = User.query.get(2)
# db.session.delete(user)
# db.session.commit()
# 增加数据
# user = User( id=5, name="hello", email="100@100.com", passward="123456", role_id=2)
# db.session.add(user)
# db.session.commit()
以上就是Flask中sqlalchemy数据增删改的基本方法,各位读者有疑问的可以私信博主或评论留下足迹。