美文网首页
Python3 Flask_sqlalchemy使用

Python3 Flask_sqlalchemy使用

作者: 南城忆往 | 来源:发表于2021-02-01 08:54 被阅读0次

    项目文件app.py仅学习使用。

    from flask import Flask, request, jsonify, json
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    # 数据库配置
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///../conf/sn.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    db = SQLAlchemy(app)
    
    
    
    # 模型配置
    class SysConf(db.Model):
        """
        系统配置
        """
        __tablename__ = 'sys_conf'
        id = db.Column(db.Integer, primary_key=True, nullable=True, autoincrement=True)
        taskCycle = db.Column(db.Integer)
        taskUnit = db.Column(db.Integer)
        debug = db.Column(db.Integer)
        # 降序排列
        __mapper_args__ = {"order_by": id.desc()}
    
        def __repr__(self):
            return '<SysConf %r>' % self.id
    
    

    基本的使用方法:

    • SELECT
    # 查询所有数据
    data = SysConf.query.all()
    
    # 条件查询
    data = db.session.query(SysConf.id).filter(SysConf.debug==0).all()
    
    # 执行原生SQL语句
    sql = 'select * from sys_conf order by id desc '
    data = db.session.execute(sql).fetchone()
    # 注意返回的结果要用list转化下。
    print(list(data))
    
    # 带参查询
    sql = 'select * from t_task_consume where collectTime=collectTime '
    data = db.session.execute(sql, {'collectTime': collect_time}).fetchall()
    
    
    # 分组查询
    data = db.session.query(TaskConsume.deviceId, db.func.count(TaskConsume.deviceId)).filter(TaskConsume.supplementNum==0).group_by(TaskConsume.deviceId).all()
    print(list(data))
    
    # 排序查询
    # asc()表示升序排序 、desc()表示降序排序
    User.query.filter().order_by(User.id.desc()).all() 
    # [name:zhou, name:chen, name:zhang, name:wang]
    

    批量更新

    # 查询条件
    args = [1,2,3,4]
    
    db.session.query(User).filter(User.id.in_(args))
    .update({User.age: User.age+1}, synchronize_session=False)
    
    db.session.commit()
    
    
    

    分页查询

    分页:第一个参数表示页数,第二个参数表示每页条目数,第三个参数分页异常不报错
    pa = User.query.filter().paginate(1,2,False)
    pa.items # 获取分页后的数据
    # [name:wang, name:zhang]
    pa.pages # 获取分页后的总页数
    # 2
    pa.page # 获取当前页数
    # 1
    pa = User.query.filter().paginate(2,2,False)
    pa.items
    # [name:chen, name:zhou]
    

    相关文章

      网友评论

          本文标题:Python3 Flask_sqlalchemy使用

          本文链接:https://www.haomeiwen.com/subject/knmcjktx.html