【发布时间】:2011-12-08 17:24:48
【问题描述】:
我需要将产品添加到我的数据存储区。如果产品已经存在,那么我需要分配另一个key_name。
假设,我已经有:
产品 = MyDBModelProduct(key_name='milk')
现在,当我添加其他产品(再次添加牛奶)时,我需要使用 key_names milk-1、milk-2、milk-3 等添加它们。
所以,在添加新的数据库记录之前,我需要验证牛奶是否已经存在。
我看到了 3 种可能的方法:
(1)GqlQuery用法:
proposed_key_name = 'milk'
product = db.GqlQuery("SELECT * FROM MyDBModelProduct WHERE key_name = :1 LIMIT 1", proposed_key_name).fetch(1)
if (len(product) > 0): # can not use this name, should look for milk-2, milk-3...
(2)all用法:
query = MyDBModelProduct.all()
count = query.filter('key_name =', proposed_key_name).count()
(3)get_by_key_name用法:
id_key_name = proposed_key_name
id_count = 1
while MyDBModelProduct.get_by_key_name(id_key_name) is not None:
id_key_name = proposed_key_name + '-' + id_count
id_count += 1
最好的方法是什么?哪一个会工作得更快?
【问题讨论】:
标签: google-app-engine google-cloud-datastore