1
工作datetime對象在這個模型中在谷歌應用程序引擎
class Rep(db.Model):
mAUTHOR = db.UserProperty(auto_current_user=True)
mUNIQUE = db.StringProperty()
mCOUNT = db.IntegerProperty()
mDATE = db.DateTimeProperty(auto_now=True)
mDATE0 = db.DateTimeProperty(auto_now_add=True)
mWEIGHT = db.IntegerProperty()
我想做的事:
mWEIGHT = mCOUNT/mDATE0
內這個
for循環
for i in range(len(UNIQUES)):
C_QUERY = Rep.all()
C_QUERY.filter("mAUTHOR =", user)
C_QUERY.filter("mUNIQUE =", UNIQUES[i])
C_RESULT = C_QUERY.fetch(1)
if C_RESULT:
rep=C_RESULT[0]
rep.mCOUNT+=COUNTS[i]
# how to convert mDATE0 to integer so that I can divide:
# rep.mWEIGHT = rep.mCOUNT/rep.mDATE0
rep.put()
else:
C = COUNTS[i]
S = UNIQUES[i]
write_to_db(S, C)
我問同樣的問題在幾個其他論壇,我得到了好的和有價值的建議,但我仍然無法使這個代碼的工作,因爲我很困惑(對象,inst例如,我認爲
mWEIGHT = mCOUNT/rep.mDATE0.second
會將mDATE0轉換爲秒;但它沒有,它只是把第二部分從2010-11-12 18:57:27.338000
即27
而且
mWEIGHT = mCOUNT/mDATE0.date
給出了一個類型不匹配的錯誤消息。
我也試過
rep.mWEIGHT = rep.mCOUNT/rep.mDATE0.toordinal()
這給了許多喜歡734088
但所有的項目有相同的號碼。
另請參閱我的previous question關於同一主題。
謝謝你的幫助。
EDIT3
這工作,謝謝!
if C_RESULT:
rep = C_RESULT[0]
rep.mCOUNT+=COUNTS[i]
utc_tuple = rep.mDATE0.utctimetuple()
# this is actually float not integer
mDATE0_integer = time.mktime(utc_tuple)
mDATE0_day = mDATE0_integer/86400
rep.mWEIGHT = float(rep.mCOUNT/mDATE0_day)
rep.put()
EDIT2 @Constantin:我意識到,號碼也必須花車:
>>> mCOUNT = 35
>>> div = mCOUNT/mDATE0
>>> div
0
>>> div = float(mCOUNT)/float(mDATE0)
>>> div
2.7140704010987625e-08
>>>
不知道如何把這個給腳本。有什麼建議麼?
編輯
@Constantin:
對於項目
C_RESULT [0] = 「新項目」
這是結果我得到。
new item:
rep: <__main__.Rep object at 0x052186D0>
mDATE0_integer: 1289575981
rep.mCOUNT: 35
rep.mWEIGHT: 0
所以
mDATE0_integer = int(time.mktime(rep.mDATE0.utctimetuple()))
作品,並給出了整數1289575981
但這種劃分
rep.mWEIGHT = rep.mCOUNT/mDATE0_integer
的結果爲0有什麼建議?
非常感謝您的回答。 'mktime'有效,但分區仍然不起作用。我將上面的代碼添加爲編輯。請讓我知道你在想什麼。再次感謝。 – Zeynel 2010-11-13 19:20:04
@Zeynel,很高興爲你工作。是的,'mktime'返回浮點數,是的,你應該留意整數除法('1/3 == 0')和整數截斷('int(0.3)== 0')。 – Constantin 2010-11-14 07:22:20