Flask框架之基本查询语法
基本语法格式:
模型类名.query[.过滤器].执行器
常用的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对象,它包含指定范围内的结果 |
案例代码:
# 查询所有人物数据 print(PeopleInfo.query.all())# 查询有多少个人物 print(PeopleInfo.query.count())# 查询第1个人物 print(PeopleInfo.query.first())# 查询id为4的人物[3种方式] print(PeopleInfo.query.get(4)) print(PeopleInfo.query.filter(PeopleInfo.id == 4).first()) print(PeopleInfo.query.filter_by(id=4).first())# 查询名字结尾字符为g的所有数据[开始/包含] print(PeopleInfo.query.filter(PeopleInfo.name.endswith(‘g‘)).all())# 查询名字不等于wang的所有数据[2种方式] print(PeopleInfo.query.filter(PeopleInfo.name != ‘wang‘).all())# 查询名字和邮箱都以 li 开头的所有数据[2种方式] print(PeopleInfo.query.filter(PeopleInfo.name.startswith(‘li‘)).filter(PeopleInfo.email.startswith(‘li‘)).all()) print(PeopleInfo.query.filter(PeopleInfo.name.startswith(‘li‘), PeopleInfo.email.startswith(‘li‘)).all())# 查询password是 `123456` 或者 `email` 以 `itheima.com` 结尾的所有数据 from sqlalchemy import or_ print(PeopleInfo.query.filter(or_(PeopleInfo.password == ‘123456‘, PeopleInfo.email.endswith(‘itheima.com‘))).all())# 查询id为 [1, 3, 5, 7, 9] 的人物列表 print(PeopleInfo.query.filter(PeopleInfo.id.in_([1, 3, 5, 7, 9])).all())# 查询name为liu的人物数据 print(PeopleInfo.query.filter_by(name=‘liu‘).all())# 查询所有人物数据,并以邮箱排序 # 降序 print(PeopleInfo.query.order_by(PeopleInfo.email.desc()).all()) # 升序 print(PeopleInfo.query.order_by(PeopleInfo.email.asc()).all())# 每页3个,查询第2页的数据 # page=None, 第几页 # per_page=None 每页几条数据 paginates= PeopleInfo.query.paginate(page=1, per_page=2) # 第几页 print(paginates.page) # 每页几个 print(paginates.per_page) # 一共多少数据 print(paginates.total) # 当前页的数据 print(paginates.items)
模型类代码:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) #设置连接数据库的URL app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘mysql://root::3306/test‘ app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = True #查询时会显示原始SQL语句 app.config[‘SQLALCHEMY_ECHO‘] = True db = SQLAlchemy(app) #定义模型 class BookInfo(db.Model): #设置表名 __tablename__ = ‘bookinfo‘ #设置为主键之后,自动自增长 id = db.Column(db.Integer,primary_key=True) name = db.Column(db.String(20),unique=True,nullable=False) pub_date = db.Column(db.Date,nullable=True) readcount = db.Column(db.Integer,default=1) commentcount = db.Column(db.Integer,default=1) is_delete = db.Column(db.Boolean,default=False) def __repr__(self): return self.name class PeopleInfo(db.Model): __tablename__ = ‘peopleinfo‘ id = db.Column(db.Integer,primary_key=True) name = db.Column(db.String(20),unique=True) password = db.Column(db.String(20),nullable=False) email = db.Column(db.String(50),nullable=True) #设置外键 book_id = db.Column(db.Integer,db.ForeignKey(‘bookinfo.id‘)) def __repr__(self): return self.name if __name__ == ‘__main__‘: app.run(debug=True)
相关推荐
云中舞步 2020-11-12
杨德龙 2020-11-11
JohnYork 2020-10-16
wangzhaotongalex 2020-09-22
xiaoseyihe 2020-11-16
不要皱眉 2020-10-14
Crazyshark 2020-11-13
K先生 2020-11-10
momode 2020-09-11
思君夜未眠 2020-09-04
点滴技术生活 2020-08-21
MaggieRose 2020-08-19
kevinweijc 2020-08-18
wintershii 2020-08-17
vapaad 2020-08-17
wera00 2020-08-17
移动开发与培训 2020-08-16
ReunionIsland 2020-08-16
JimyFengqi 2020-08-16