Flask-sqlalchemy扩展学习

版权声明:转载请注明出处 https://blog.csdn.net/qq_42844049/article/details/86811555

flasqlalchemy

数据库相关配置:
  1. 引入相关模块
from flask_sqlalchemy import SQLAlchemy
  1. 创建数据库实例
db = SQLAlchemy(app)
  1. 配置数据库相关信息
#数据库地址用户名及密码以及数据库名称
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]/flask_sql_demo'
#动态追踪修改设置未设置只会提示警告不建议开启
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  1. 创建数据库模型
#操作数据库模型须继承自db.Model
class Role(db.Model):
#定义表名
    __tablename__ = 'roles'
    #定义字段名
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(16),unique=True)
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(16), unique=True)
    role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))
  1. 表操作
    增删改
#增
role = Role(name = 'admin')
db.session.add(role)
db.session.commit()
##同时添加多条数据
role1 = Role(name = 'admin')
role2 = Role(name = 'user1')
role3 = Role(name = 'user2')
db.session.add_all([role1,role2,role3])
db.session.commit()
#删
db.session.delete(role)
db.session.commit
#改
role.name = 'chengxuyuan'
db.session.commit

简单查询

常用的SQLAlchemy查询过滤器
过滤器 说明
filter() 把过滤器添加到原查询上,返回一个新查询
filter_by() 把等值过滤器添加到原查询上,返回一个新查询
limit 使用指定的值限定原查询返回的结果
offset() 偏移原查询返回的结果,返回一个新查询
order_by() 根据指定条件对原查询结果进行排序,返回一个新查询
group_by() 根据指定条件对原查询结果进行分组,返回一个新查询
常用的SQLAlchemy查询执行器
方法 说明
all() 以列表形式返回查询的所有结果
first() 返回查询的第一个结果,如果未查到返回None
first_or_404() 返回查询的第一个结果,如果未查到返回404
get() 返回指定主键对应的行,如果不存在返回None
get_or_404() 返回指定主键对应的行,如果不存在返回404
count() 返回查询结果的数量
paginate() 返回一个paginate对象,它包含指定范围内的结果

查询所有用户数据

User.query.all()

查询有多少个用户

User.query.count()

查询第一个用户

User.query.first()

查询id为4的用户
1.User.query.get(4)
2.User.query.filter_by(id=4)
3.User.query.filter(User.id == 4)
filter()与filter_by()的区别
filter():对象.属性 == 值
filter_by():属性 = 值
filter()功能更加强大,可以实现更多的一些查询,支持比较运算符

猜你喜欢

转载自blog.csdn.net/qq_42844049/article/details/86811555