# -*- 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: sql = f"select id,name,contact,appid,appkey,status from company where id={comp_id};" data = mydb.query(sql) log.info(f"get data from db was {data}") if data: company = {} company['id'], company['name'], company['contact'], company['appid'], company['appkey'],company['status'] = \ data[0] else: log.error(f"{comp_id} not found in mysql !") return jsonify({'code': 404}) except Exception: log.error(f"get company id {comp_id} failed! ", exc_info=True) return jsonify({'code': 500}) return jsonify({'code': 200, 'body': company}) def delete(self, comp_id): try: 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': 500}) return jsonify({'code': 200}) 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': 500}) return jsonify({'code': 200}) 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'] # find comp_id in mysql sel_sql=f"select name from company where id={comp_id};" data=mydb.query(sel_sql) if data: # 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) return jsonify({'code': 200}) else: return jsonify({'code': 404}) # 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': 500}) # # 操作(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': 200, 'body': companys}) else: return jsonify({'code': 500}) def post(self): companys = self.get_company() if companys: return jsonify({'code': 200, 'body': companys}) else: return jsonify({'code': 500}) 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