我們正在製作一個簡單的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)'。 –