Мне нужно добавить продукты в мое хранилище данных.В случае, если продукт уже существует, мне нужно назначить другой key_name
.Допустим, у меня уже есть: product = MyDBModelProduct (key_name = 'milk'), теперь, когда я добавляю другие продукты (снова молоко), мне нужно добавить их с именами ключей 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
Каков наилучший подход?Какой из них будет работать быстрее?