zoukankan      html  css  js  c++  java
  • flask---第一篇

    Flask中的全局变量

    current_app  程序上下文  当前激活程序的程序实例

    g         程序上下文  当前请求时程序实例

    request      请求上下文  请求对象,封装了客户端发的http请求中的内容

    session     请求上下文  用户会话,用于存储请求之间需要记住的值的词典


    flask 中的钩子函数

    • before_first_request
    • before_request
    • after_request
    • teardown_request

    钩子函数的典型的应用场景是:

      在一次请求中通过before_first_request来获取到用户数据存储到Context中,以后的请求就可以直接从Context中获取到用户的数据了

     SQLAlchemy有查询过滤器如下:

    过滤器说明
    filter() 把过滤器添加到原查询,返回新查询
    filter_by() 把等值过滤器添加到原查询,返回新查询
    limit() 使用指定值限制原查询返回的结果数量,返回新查询
    offset() 偏移原查询返回的结果,返回新查询
    order_by() 排序返回结果,返回新查询
    groupby() 原查询分组,返回新查询
    all() 以列表形式返回结果
    first() 返回第一个结果,如果没有返回None
    first_or_404() 返回第一个结果,如果没有抛出404异常
    get() 返回主键对应记录,没有则返回None
    get_or_404() 返回主键对应记录,如果没有抛出404异常
    count() 返回查询结果数量
    paginate() 返回paginate对象,此对象用于分页     传入参数(index,limit)
    filter指定列名的时候,可以不使用类名;filter_by也不是说任何时候都可以不指定类名
    我平时使用的时候,两者区别主要就是当使用filter的时候条件之间是使用“==",fitler_by使用的是"="。
    user1 = session.query(User).filter_by(id=1).first()
    user1 = session.query(User).filter(id==1).first()
    

    利用 Flask-sqlalchemy 求列表的和

    li = [1,2,3,4]

    sum_cash = db.session.query(func.sum(TUserloanLog.change_cash)).filter(and_(TUserloanLog.change_reason == 4,TUserloanLog.id.in_(li)))

    最后的sum_cash 是 id 在 li 里 and  change_reason为4,change_cash的和

    print sum_cash   [(result,)]


    flask 一次查询两个表

    query = db.session.query(TTradeCostDiffBalance, TUserOrder).filter(TTradeCostDiffBalance.order_id == TUserOrder.order_id)


    sqlalchemy中我们在  delete、update 的时候加上synchronize_session=False  

    注意点:我们在删除记录时,默认会尝试删除session中符合条件的对象,in 操作还不支持,解决办法就是删除时不同步,加上(synchronize_session=False  )

    session.query(User).filter(User.id.in_((1, 2, 3))).delete(synchronize_session=False)

    session.commit()

    # or session.expire_all()

    在當前的工程裏的terninal  輸入 pip freeze > requirements.txt  就會在當前工程裏面生成一個 此項目所需要的各種插件的名陳以及版本號


     防止sql注入

    db = SQLAlchemy(app)
    conn = db.session.connection()
    
    @app.route('/')
    def index():
        rv = conn.execute('select * from test where id = %s', [1])
        return jsonify(rv)
    

    Flask-sqlalchemy总结:

    用户的提现申请的统计:

      TUserAssetLog.change_reason == x(提现)

      TUserAssetsLog.change_frozen_cash(提现金额)

    query = db.sesssion.query(func.sum(TUserAssetsLog.change_frozen_cash),

          func.count(distinct(TUserAssetLog.uid))).filter(TUserAssetLog.change_reason == x)

  • 相关阅读:
    jquery animate()方法 语法
    jquery unload方法 语法
    jquery undelegate()方法 语法
    jquery unbind()方法 语法
    jquery trigger() 方法 语法
    jquery toggle()方法 语法
    jquery change() 函数 语法
    jquery blur()函数 语法
    jquery bind()方法 语法
    jquery checked选择器 语法
  • 原文地址:https://www.cnblogs.com/mosson/p/6024456.html
Copyright © 2011-2022 走看看