zoukankan      html  css  js  c++  java
  • pandas 初识(四)

    Pandas 和 sqlalchemy 配合实现分页查询 Mysql 并获取总条数

    @api.route('/show', methods=["POST"])
    def api_show():  # 分页查询并获取总数
        offset = request.json.get('offset', 0)
        limit = request.json.get('limit', 10)
        sql = "select SQL_CALC_FOUND_ROWS * from bidata.gen_adid_cost order by id desc limit {offset},{limit}".format(
            offset=offset,
            limit=limit)
        con = db.get_engine(current_app, 'tm_new_hfjy')
        with con.connect() as conn:
            df1 = pd.read_sql(sql, con=conn)
            df2 = pd.read_sql("SELECT FOUND_ROWS() as total;", con=conn)
    
            # df1 = df1.drop(index=[0])
            # print(df1["update_time"].head())
            # print(df1.dtypes)
            # df1["create_time"] = df1["create_time"].dt.strftime("%Y/%m/%d")
    
            total = df2.loc[0, "total"]
       df = df.where(df.isnull(), None)
        result = list(df1.T.to_dict().values())
    
        import numpy as np
    
        class MyNpEncoder(json.JSONEncoder):
            def default(self, obj):
                if isinstance(obj, np.integer):
                    return int(obj)
                elif isinstance(obj, np.floating):
                    return float(obj)
                elif isinstance(obj, np.ndarray):
                    return obj.tolist()
                elif isinstance(obj, pd.datetime):
                    return obj.strftime("%Y-%m-%d %H:%M:%S")
                elif isinstance(obj, date):
                    return obj.strftime("%Y/%m/%d")
    
                else:
                    return super(MyNpEncoder, self).default(obj)
    
        data = dict(code=RET.OK, msg="共 %s 条,本页加载 %s 条记录!" % (total, len(result)), data=result, total=total)
        return json.dumps(data, cls=MyNpEncoder)
  • 相关阅读:
    Ruby--Array
    SQL--查询相同字段的数据
    Ruby--CSV
    Ruby--String
    Git常用命令
    JS Date函数操作
    FTP命令
    Rails--%w用法[转]
    Rails--export csv
    Mysql远程访问
  • 原文地址:https://www.cnblogs.com/spaceapp/p/10792660.html
Copyright © 2011-2022 走看看