Python Trueskill将评级保存到数据库

Python Trueskill将评级保存到数据库,python,mysql,Python,Mysql,我发现了一个非常好的Python模块,我知道它是Trueskill 我遇到的问题是,我不知道如何将评级保存到我的数据库中,并将其重新加载(我知道如何发布到mysql和所有内容)。我得到了一个trueskill对象,我需要将其转换为str,以便将其保存到mysql。我不能序列化它 例如 player1 = Rating() print player1 trueskill.Rating(mu=25.000, sigma=8.333) trueskill。评级对象支持pickle。使用pickle

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

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

例如

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

trueskill。评级对象支持pickle。使用
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
,可以将字符串反序列化回评级对象:

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

您只需保留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进行序列化。它们会浪费您的数据库容量。

这不起作用。cursor.execute('UPDATE matchmaking set
elo
=%s其中
token
=%s',(pickle.dumps(Rating()),y[0])当我再次加载它时,我得到以下错误ImportError:没有名为copy\u reg的模块