Flask复习 五 数据库(二)

5.8.1 创建表

db.create_all()函数创建表

      
      
1
2
3
      
      
(venv) $ python hello.py shell
>>> from hello import db
>>> db.create_all()

删除旧表使用

函数
      
      
1
2
3
4
5
6
      
      
<!-- more -->
## 5.8.2 插入行
在Flask-SQLAlchemy中,会话由db.session表示.
准备把对象写入数据库之前,先要将其添加到会话中:

db.session.add(admin_role)
db.session.add(mod_role)
db.session.add(user_role)
db.session.add(user_john)
db.session.add(user_susan)
db.session.add(user_david)

         
         
1
         
         
或者简写成:

db.session.add_all([admin_role, mod_role, user_role,
… user_john, user_susan, user_david])

         
         
1
         
         
然后调用commit()方法提交会话:

db.session.commit()

         
         
1
2
3
4
5
         
         
## 5.8.3 修改行
调用add()方法也能更新模型
## 5.8.4 删除行

db.session.delete(mod_role)
db.session.commit()

         
         
1
大专栏   Flask复习 五 数据库(二)ass="line">2
3
4
         
         
## 5.8.5 查询行
Flask-SQLAlchemy为每个模型类都提供了query对象.
所有记录:

Role.query.all()
User.query.all()

         
         
1
2
         
         
filter()过滤器可以配置query对象进行精确地数据库查询.
若要查看SQLAlchemy为查询生成的原生SQL查询语句,只需把query对象转换成字符串:

str(User.query.filter_by(role=user_role))
‘SELECT users.id AS users_id, users.username AS users_username,users.role_id AS users_role_id FROM users WHERE :param_1 = users.role_id’
```

常用的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对象,它包含指定范围内的结果

猜你喜欢

转载自www.cnblogs.com/liuzhongrong/p/12263201.html