| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #coding:utf-8
- import os
- import time
- import datetime
- import sys
- import django
- import common.common_control as ccc
- from django.db import connection
- sys.path.append('/mnt/wzbapi/src')
- os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
- django.setup()
- import common.models as cm
- def update_group_rank(stock_date=None):
- """
- """
- ccc.cache.delete("cdata_*")
- if stock_date:
- stock_date = stock_date
- else:
- stock_date = datetime.datetime.now().strftime("%Y-%m-%d")
- ccc.cache.delete("*_"+stock_date)
- groups = cm.MatchGroup.objects.all()
- for gp in groups:
- match_id = gp.match_id
- match_group = gp.id
- delkey = "*_%s_%s_%s" % (match_id,match_group,stock_date)
- del_keys = ccc.cache.keys(delkey)
- ccc.cache.delete(*del_keys)
- prset = cm.PlayerRecord.objects.filter(match_id=match_id,match_group=match_group,stock_date=stock_date).order_by("-total_income")
- if prset:
- records = prset.values()
- case_id = " case id "
- cases = []
- where = []
- for index,pr in enumerate(prset):
- case = "WHEN %s THEN %s" % (pr.id,index+1)
- cases.append(case)
- where.append(str(pr.id))
- #
- key = "%s_%s_%s_%s" % (pr.player_id,match_id,match_group,stock_date)
- record = records[index]
- record.update({"group_rank":index+1})
- ccc.pl.set(key,json.dumps(record,cls=ccc.CusJSONEncoder))
- ccc.pl.execute()
- case = case_id + " ".join(cases)
- where = ",".join(where)
- sql = "update player_record set group_rank = %s ELSE 0 END where id in (%s)" % (case,where)
- cursor = connection.cursor()
- cursor.execute(sql)
- cursor.close()
- if __name__ == "__main__":
- print "start update group rank..."
- st = time.time()
- update_group_rank()
- print "time cost:",time.time()-st
|