tools/scripts/build_wid/build_wid.py
aozhiwei 2bcdbc0351 1
2018-12-05 11:25:41 +08:00

158 lines
3.7 KiB
Python

import pymysql
import hashlib
print('runing........')
host_name = "127.0.0.1"
user_name = "root"
password = "keji178"
database_name= "accountdb" + "1"
table_name = "accounts"
selected_count = 0
database_config = {
'host_name' : host_name,
'user_name' : user_name,
'password' : password,
'database_name' : database_name
}
select_config = [
'country',
'province',
'city',
'sex',
'nickname',
'idx',
'accountid'
]
def getDatabaseCursor(config):
#print('getDatabaseCursor')
db = pymysql.connect(config['host_name'],config['user_name'],config['password'],config['database_name'])
return db.cursor()
def getSelectInfo(min_idx,max_idx,s_config):
#print('getSelectInfo')
try:
cursor = getDatabaseCursor(s_config)
select_sql = 'select country, province, city, sex, nickname , idx, accountid \
from accounts where idx > %s and idx <= %s and accountid is not null' % (min_idx,max_idx)
#print(select_sql)
cursor.execute(select_sql)
ret = cursor.fetchall()
except:
print('sql error!')
return
return ret
def translateToMd5(translate_info):
#print('translateTomd5')
if translate_info:
m = hashlib.md5()
b = translate_info.encode(encoding = 'utf-8')
m.update(b)
return m.hexdigest()
return
def saveTofile(save_info,save_name):
#print('saveTofile')
if save_info and save_name :
with open(save_name,'a') as f:
f.write("%s\n"%(save_info))
return
def buildWid(databaseName):
global selected_count
selected_count = 0
database_config['database_name'] = databaseName
select_min_idx = 10000 + selected_count
select_max_idx = select_min_idx + 10
finsh_flag = 1;
select_count = 0;
save_file_name = 'updata_wid_test.txt'
while select_count < 1000 and finsh_flag:
#print(select_count)
min_idx = select_min_idx + select_count * 10
max_idx = select_max_idx + select_count * 10
select_info = getSelectInfo(min_idx,max_idx,database_config)
if select_info:
#print(len(select_info))
for player_info in select_info:
country = player_info[0]
province = player_info[1]
city = player_info[2]
sex = player_info[3]
nickname = player_info[4]
idx = player_info[5]
accountid = player_info[6]
nickname_string = ''
if nickname == '' or not nickname:
continue
if nickname:
nickname_string=str(nickname,'utf-8')
str1 = '%s%s%s%s'%(country, province, city, sex)
new_str = str1 + nickname_string
md5_str = translateToMd5(new_str)
update_sql = "UPDATE %s SET wid = '%s' where accountid = '%s';"%(table_name,md5_str,accountid)
saveTofile(update_sql,save_file_name)
selected_count+= 1
else:
print('finsh_flag')
finsh_flag = 0
select_count += 1;
print('buidWid END!')
return
buildWid("accountdb_bk1")
buildWid("accountdb_bk2")
buildWid("accountdb_bk3")
buildWid("accountdb_bk4")
buildWid("accountdb_bk5")
buildWid("accountdb_bk6")
buildWid("accountdb_bk7")
buildWid("accountdb_bk8")
buildWid("accountdb_bk9")
buildWid("accountdb_bk10")
buildWid("accountdb_bk11")
buildWid("accountdb_bk12")
buildWid("accountdb_bk13")
buildWid("accountdb_bk14")
buildWid("accountdb_bk15")
buildWid("accountdb_bk16")
buildWid("accountdb_bk17")
buildWid("accountdb_bk18")
buildWid("accountdb_bk19")
buildWid("accountdb_bk20")