update_group_rank.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #coding:utf-8
  2. import os
  3. import time
  4. import datetime
  5. import sys
  6. import django
  7. import common.common_control as ccc
  8. from django.db import connection
  9. sys.path.append('/mnt/wzbapi/src')
  10. os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
  11. django.setup()
  12. import common.models as cm
  13. def update_group_rank(stock_date=None):
  14. """
  15. """
  16. ccc.cache.delete("cdata_*")
  17. if stock_date:
  18. stock_date = stock_date
  19. else:
  20. stock_date = datetime.datetime.now().strftime("%Y-%m-%d")
  21. ccc.cache.delete("*_"+stock_date)
  22. groups = cm.MatchGroup.objects.all()
  23. for gp in groups:
  24. match_id = gp.match_id
  25. match_group = gp.id
  26. delkey = "*_%s_%s_%s" % (match_id,match_group,stock_date)
  27. del_keys = ccc.cache.keys(delkey)
  28. ccc.cache.delete(*del_keys)
  29. prset = cm.PlayerRecord.objects.filter(match_id=match_id,match_group=match_group,stock_date=stock_date).order_by("-total_income")
  30. if prset:
  31. records = prset.values()
  32. case_id = " case id "
  33. cases = []
  34. where = []
  35. for index,pr in enumerate(prset):
  36. case = "WHEN %s THEN %s" % (pr.id,index+1)
  37. cases.append(case)
  38. where.append(str(pr.id))
  39. #
  40. key = "%s_%s_%s_%s" % (pr.player_id,match_id,match_group,stock_date)
  41. record = records[index]
  42. record.update({"group_rank":index+1})
  43. ccc.pl.set(key,json.dumps(record,cls=ccc.CusJSONEncoder))
  44. ccc.pl.execute()
  45. case = case_id + " ".join(cases)
  46. where = ",".join(where)
  47. sql = "update player_record set group_rank = %s ELSE 0 END where id in (%s)" % (case,where)
  48. cursor = connection.cursor()
  49. cursor.execute(sql)
  50. cursor.close()
  51. if __name__ == "__main__":
  52. print "start update group rank..."
  53. st = time.time()
  54. update_group_rank()
  55. print "time cost:",time.time()-st