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)

  • 相关阅读:
    Java (三)APACHE Commons IO 常规操作
    JavaFX FileChooser文件选择器,缓存上一次打开的目录
    JavaFX FileChooser文件选择器、DirectoryChooser目录选择器
    javaFX 在窗口的标题栏显示当前时间,1秒更新一次时间
    Java 实现截屏
    composer安装包的时候触发PHP fatal error,提示允许的内存耗光
    箭头函数
    js中的寄生组合继承
    构造函数的原型
    在string.replace中使用具名组匹配
  • 原文地址:https://www.cnblogs.com/mosson/p/6024456.html
Copyright © 2011-2022 走看看