• 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:mysql@127.0.0.1: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)
    该花的钱要花,该吃的饭要吃。
  • 相关阅读:
    ABAP Help Document(2):1.2 表达式
    ABAP Help Document(1):1.1关键字
    api——》将.doc文件转成.docx文件后缀,且仅需要输入单个文件绝对路径
    python 更改默认输出 解决编码常出错问题
    爬取法律法规代码(可直接使用)
    python datetime 模块详解
    python 获得日期列表中最大日期(能够剔出不是日期类型)
    博客园页面css
    日期大小比较令解决{strftime('%Y年%m月%d日')}出错问题
    CodeForces
  • 原文地址:https://www.cnblogs.com/chao666/p/12424924.html
Copyright © 2020-2023  润新知