我们正在制作一个简单的MUD作为一种“学习如何用Python进行编程”的项目。我们希望它是持久的,所以我们有一个MySQL数据库供Python脚本保存。然而,我们现在坚持从数据库中提取一个整数,并添加到数据库中,并再次保存。这里是我的代码:Python,MySQL,从数据库加载数据,更改它,再次保存它?
initxp = cur.execute("SELECT Exp FROM CharactersDB WHERE ID=%s", name)
print "initxp is,", initxp
global xp
xp = int(initxp)
print "current xp is ", xp
global xpcounter
xpcounter = ("UPDATE CharactersDB SET Exp=%s WHERE ID=%s") #where is name variable
#save initial xp to db
cur.execute(xpcounter, (xp, name,))
db.commit()
#when you gain xp
def gainxp():
global xp
global xpcounter
xp = xp + 10
print name, "gains", xp, "xp!"
#save new xp to db
cur.execute(xpcounter, (xp, name,))
db.commit()
return xp
#save stats to the database,
#this funciton will be used in the character creation file
gainxp()
我没有任何错误,但是我确实有一些奇怪的事情发生了:
首先,当它打印了“initxp”变量,它每次1返回。与“当前xp”行一样。所以,当它进入gainxp()函数时,它只会增加1到10,保存总共11个,并且处于其快乐的状态。
我们想要做的就是将已经保存的11个xp再添加10个,保存下来,再次运行并添加10个,所以我们有31xp,而不是每次一致11,这显然违背了目的。
谢谢!
我读过全局变量通常不被接受,但不知道该怎么办......否则,你可能会用我们拥有的全局变量来讨厌我们的代码.....无论如何,谢谢!这固定很好。 – mathieu
将函数定义为“def gainxp(xp)',并将其传入并存储返回值:'xp = gainxp(xp)'。 –