2014-07-10 37 views
5

tüm öznitelikleri ile peewee kullanırken veritabanında son kaydedilen satır elde etmek için bir yolu var mı? Diyelim Bunu yapmak:Python-peewee en son kaydedilmiş satırı al

user = User.create(
    email = request.json['email'], 
    nickname = request.json['nickname'], 
    password = request.json['password'], 
    salt = "salt" 
) 

Ama user.idNone ve ben alabileceğimiz tek nitelikleri yukarıda belirtilen olanlardır. select() yöntemini arayabilirim ancak daha hızlı bir yol yok mu?

Teşekkür

cevap

9
User.select().order_by(User.id.desc()).get() 

Bu kimlikleri kabul ederek, son oluşturulan kullanıcıyı alacak otomatik artan tamsayı (varsayılan) 'dir.

Son kullanıcı tarafından kaydedilen kullanıcısını kaydetmek istiyorsanız, kullanıcının ne zaman kaydedileceğini belirten bir zaman damgası eklemeniz gerekir.


Güncelleme:

Peewee da artık Postgres veritabanı için RETURNING maddesini destekler. RETURNING tümceyi herhangi bir INSERT, UPDATE veya DELETE sorgusuna ekleyebilirsiniz. docs göz atın: karmaşık, çok kanallı sistemler için

u = User(email="..", nickname="..", password="..", salt="..") 
u.save() 

# at this point, peewee inserted the entry in the DB, 
# and updated all relevant fields (including the ID). 
# For example, you can do the following: 

print "ID of last-created user: %d" % u.id 

:

2

yerine yeniden sorgulama DB, bir alternatif şudur Bence bu daha iyi bir alternatif.

class User(Model): 
    id = IntegerField(primary_key=True) 
    email = TextField(unique=True) 
    nickname = TextField() 
    password = TextField() 
    salt = TextField() 

Ama çok ufak onun PrimaryKeyField sınıfını kullanmadıkça autoincrementing alanları nasıl işleneceğini bilmiyor: Ben senin User modelini tahmin ediyorum

+1

Peewee artık INSERT, UPDATE ve DELETE sorguları üzerinde çalışan 'RETURNING' (yalnızca postgres) özelliğini de desteklemektedir. [Docs here] (http://docs.peewee-orm.com/en/latest/peewee/querying.html#returning-clause). – coleifer

+0

Bu kabul edilen cevap olmalı. –

0

şöyle Bu değildim

class User(Model): 
    id = PrimaryKeyField() 
    email = TextField(unique=True) 
    nickname = TextField() 
    password = TextField() 
    salt = TextField() 

Her yerde bulabildiğim belgelendi. Source.

İlgili konular