2013-09-05 2 views
1

나는 Trueskill을 알고 파이썬을위한 훌륭한 모듈을 발견했습니다.Trueskill은 데이터베이스에 등급을 저장합니다

http://trueskill.org/

오전 데 문제 (내가 MySQL의 모든 것을 게시하는 방법을 알고) 내 데이터베이스에 등급을 저장하는 방법을 알고, 그것을 다시로드하지 않는다는 것입니다. 나는 trueskill 객체를 받았고, 그것을 mysql에 저장할 수 있도록 str로 변환해야한다. 나는 그것을 직렬화 할 수 없다.

player1 = Rating() 
print player1 
trueskill.Rating(mu=25.000, sigma=8.333) 

답변

0

객체 지원 피클 trueskill.Rating이다. pickle.dumps을 사용하여 등급 객체를 직렬화하십시오. 예를 들어 :

>>> import trueskill 
>>> r = trueskill.Rating(mu=25.000, sigma=8.333) 
>>> import pickle # or import cPickle as pickle 
>>> s = pickle.dumps(r) 
>>> s 
"ccopy_reg\n_reconstructor\np0\n(ctrueskill\nRating\np1\nc__builtin__\nobject\np2\nNtp3\nRp4\n(dp5\nS'tau'\np6\nF0.36002880172809215\nsS'pi'\np7\nF0.014401152069123686\nsb." 

pickle.loads 사용하면 등급 오브젝트로 문자열을 역 직렬화 할 수 있습니다 : 당신은 상태 그대로 trueskill.Rating 개체를 저장 만 무 시그마 값을 유지해야

>>> r2 = pickle.loads(s) 
>>> r2 
trueskill.Rating(mu=25.000, sigma=8.333) 
+0

이것은 작동하지 않습니다. cursor.execute ('UPDATE matchmaking set'elo' = % s WHERE'토큰'= % s', (pickle.dumps (Rating)), y [0])) 다시로드하면 다음 오류가 발생합니다. ImportError : copy_reg – iargue

+0

@ user1189764라는 모듈이 없습니다. [이 스크린 캐스트] (http://ascii.io/a/5323)를 참조하십시오. – falsetru

2

.

r = trueskill.Rating() 
cursor.execute(''' 
    UPDATE matchmaking 
    SET mu = %f AND sigma = %f 
    WHERE token = %s 
''', (r.mu, r.sigma, token)) 

Pickle 또는 JSON으로 직렬화하지 마십시오. 그들은 당신의 다저스 능력을 낭비합니다.

관련 문제