# -*- coding: utf-8 -*- from __future__ import absolute_import from flask import Flask, jsonify from flask_restful import reqparse, abort, Api, Resource import logging from myredis.myredis import company_redis, expire_time from mysql.mmysql import MysqlBase from config import mysql_promotion_config import pdb log = logging.getLogger(__name__) mydb = MysqlBase(**mysql_promotion_config) parser = reqparse.RequestParser() parser.add_argument('id') parser.add_argument('name') parser.add_argument('contact') parser.add_argument('appid') parser.add_argument('appkey') parser.add_argument('status') # # 操作(put / get / delete)单一资源Todo # shows a single todo item and lets you delete a todo item class Company(Resource): def get(self, comp_id): try: data = company_redis.hmget(comp_id, ['id', 'name', 'contact', 'appid', 'appkey']) log.info(f"get data from redis was {data}") id,_,_,_,_=data if not id: sql = f"select id,name,contact,appid,appkey from company where id={comp_id};" data = mydb.query(sql) log.info(f"get data from db was {data}") company = {} company['id'], company['name'], company['contact'], company['appid'], company['appkey'] = data company_redis.hmset(company['id'], company) company_redis.expire(company['id'], expire_time) except Exception: log.error(f"get company id {comp_id} failed! ", exc_info=True) return jsonify({'code': 0}) return jsonify({'code': 1, 'body': data}) def delete(self, comp_id): try: company_redis.expire(comp_id, 0) del_sql = f'delete from company where id={comp_id};' mydb.query(del_sql) except Exception: log.error(f"remove {comp_id} failed!", exc_info=True) return jsonify({'code': 0}) return jsonify({'code': 1}) def post(self, comp_id): args = parser.parse_args() try: company = {} company['id'] = comp_id company['name'] = args.name company['contact'] = args.contact company['appid'] = args.appid company['appkey'] = args.appkey # insert to mysql mydb.insert("company", company) # insert to redsi company_redis.hmset(company['id'], company) company_redis.expire(company['id'], expire_time) except Exception: log.error("set values to company mysql/redis failed!", exc_info=True) return jsonify({'code': 0}) return jsonify({'code': 1}) def put(self, comp_id): args = parser.parse_args() try: company = {} company['id'] = comp_id company['name'] = args['name'] company['contact'] = args['contact'] company['appid'] = args['appid'] company['appkey'] = args['appkey'] company['status'] = args['status'] # insert to mysql # update_sql = f"update company set id='{company['id']}',name='{company['name']}',contact='{company[ # 'contact']}',appid='{company['appid']}',appkey='{company['appkey']}' where id='{comp_id}';" condition = f"id='{comp_id}'" # log.info(f"update sql was {update_sql}") mydb.update("company", company, condition) # update redsi company_redis.hmset(company['id'], company) company_redis.expire(company['id'], expire_time) except Exception: log.error("update values to company redis,mysql failed!", exc_info=True) return jsonify({'code': 0}) return jsonify({'code': 1}) # # 操作(post / get)资源列表TodoList # shows a list of all todos, and lets you POST to add new tasks class CompanyList(Resource): def get(self): companys = self.get_company() if companys: return jsonify({'code': 1, 'body': companys}) else: return jsonify({'code': 0}) def post(self): companys = self.get_company() if companys: return jsonify({'code': 1, 'body': companys}) else: return jsonify({'code': 0}) def get_company(self): sel_sql = "select id from company where 1;" data = mydb.query(sel_sql) company_list = [] if data: for item in data: try: company_list.append(item[0]) except Exception: log.error("split data from db failed!", exc_info=True) return company_list