2010-07-05 15 views
1

什麼是爲給定的示例模型創建數據庫的最佳方法,併爲每個條目分配一個唯一的鍵/名稱,我已經擁有並覆蓋它,如果給出的關鍵/名字再次出現。從我讀到的你應該使用keyname?但我沒有得到它覆蓋。保持和更新唯一數據條目的最佳方法谷歌應用程序引擎python

class SR(db.Model): 
    name = db.StringProperty() 
    title = db.StringProperty() 
    url = db.StringProperty() 

s = SR(key_name="t5-2rain") 
s.name = 't5-2rain' 
s.title = 'kaja' 
s.url = 'okedoke' 
db.put(s) 

如果我使用相同的密鑰名稱,但不同的標題值再次輸入這個,將創建另一個條目我怎麼覆蓋使用相同的密鑰,名稱的現有價值。

基本上我該如何使用唯一標識符填充表並覆蓋值,如果相同的唯一標識符已經存在? 我意識到我可以搜索一個現有的名稱或密鑰名稱等,調用該對象對實例進行更改並重新填充,但是,我會想象必須有比覆蓋更好的方法,特別是如果我試圖列出一些值可能被覆蓋的列表,而另一些則可能被覆蓋。

回答

1

你已經有了正確的想法。

如果2 SR實體的構造方式與key_name相同,則它們將具有相同的Key路徑。寫一個將覆蓋任何有key_name參數的舊的SR實體。

您應該能夠通過查詢數據存儲區以其獨特的鍵實體遵守本:

s = db.get(db.Key.from_path('SR', 't5-2rain')) 
+0

好,我只是叫你出,我也得到了最近該鍵名稱項,但我我正在看我的開發控制檯,並看到3個具有相同密鑰名稱的條目?爲什麼舊的仍然存在?他們不應該被覆蓋?基本上如果我這樣做,我會看到在我的開發控制檯 s = SR(key_name =「t5-2rain」)2個項目具有相同的密鑰名稱 s.name ='t5-2rain' s.title ='kaja' s.url = 'okedoke' db.put(S) S = SR(KEY_NAME = 「t5-2rain」) s.name = 't5-2rain' s.title = 'kaja2' 第url ='okedoke2' db.put(s) – user291071 2010-07-05 16:33:14

+0

你在開發或生產服務器上看到了這個嗎?在這兩種情況下,我都沒有看到它(無論是在開發服務器上使用默認的數據庫類型還是使用sqlite數據庫)。你可以發佈你所看到的截圖嗎? – 2010-07-05 19:43:26

+0

奇怪我刪除了所有條目,然後輸入它兩次,它現在覆蓋像它應該大聲笑 – user291071 2010-07-05 21:57:04

相關問題