Jak ustawić klucz podstawowy pierwotnej autoinkrement w AppEngine / Python?

Autor:sara veldhuizen stealy

Istnieje, na przykład, klasa artykułu, którego kopie są przechowywane w data przechowywania Google. I chcę dać jej link:

[a href = "/ article / {{article.uid}}" ]

Aby uzyskać ten typ:

[a href = "/ article / 55"; ]

Google ma swoje własne identyfikatory UUID, ale boli, by być częścią adresu URL: ahBzb3ZpZXRncm9vdmVibG9ncg0LEgdBcnRpY2xlGAgM.

Odpowiedzi

betsy vega
To zostało już zaimplementowane. Oprócz kluczy, BigTable dystrybuuje numeryczny identyfikator. Zapytanie DB według identyfikatora:
 Model.get_by_id()
Aby uzyskać identyfikator dowolnej encji - entity.key (). Id ()

Jest odpowiedni dla adresów URL, należy pamiętać, że identyfikator jest zwiększany dla elementów dowolnego typu w aplikacji. Jeden za wszystkich. Dlatego liczby są duże. Na przykład www.arhimir.ru/news/1126006 - wykonane w GAE-Python.
Odpowiedzi:
Dziękujemy! Bardzo odpowiedni dla mnie sposób.

W livejournal.com, artykuły uid są prawdopodobnie również "inkrementowane" tą techniką :) - queenbusick
Naprawdę potrzebuję opcji podobnej do SQL ... szczególnie ze względu na migrację z SQL do GAE DB - stacy davidowitz
scott lerch
będzie prawdopodobnie musiał użyć dodatkowego modelu:

 
class Sequence(db.Model):
    Key: db.StringProperty() #ключ, например "ArticleId"
    Number: db.IntegerProperty(default=1) #само значение

chodzi o to, że w jednej transakcji najpierw otrzymujemy wartość Number i natychmiast aktualizujemy ją +1
Czy istnieje hasło główne w przeglądarce Google Chrome? :: Urządzenia mobilne, czy korzystanie z urządzeń przenośnych jest szkodliwe? :: Jak wiarygodny jest DRDB? :: Książki i materiały dotyczące programu InDesign :: Zapytaj o najlepszy program do pracy z PostgreSQL pod Mac OS
Zostaw odpowiedź
Linki