1

我发现了一个非常好的 Python 模块,知道是 Trueskill。

http://trueskill.org/

我遇到的问题是,我不知道如何将评级保存到我的数据库中,然后将其加载回来(我知道如何发布到 mysql 和所有内容)。我得到了一个 trueskill 对象,我需要将其转换为 str,以便将其保存到 mysql。我不能json序列化它。

例子是

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

2 回答 2

3

您只需要保留 mu 和 sigma 值即可完整保存trueskill.Rating对象。

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

不要通过 Pickle 或 JSON 进行序列化。他们浪费了您的数据库容量。

于 2013-09-15T18:33:14.703 回答
0

trueskill.Rating 对象支持pickle。用于pickle.dumps序列化 Rating 对象。例如:

>>> 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,您可以将字符串反序列化回 Rating 对象:

>>> r2 = pickle.loads(s)
>>> r2
trueskill.Rating(mu=25.000, sigma=8.333)
于 2013-09-05T04:19:29.233 回答