2014-07-10 8 views
5

क्या कोई तरीका है कि डेटाबेस में पिछली सहेजी गई पंक्ति को अपने सभी विशेषताओं के साथ उपयोग करते समय डेटाबेस में कैसे प्राप्त किया जाए? मान लें कि मैं यह कर:पायथन-पेवी आखिरी सहेजी गई पंक्ति

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

लेकिन user.idNone है और केवल गुण मैं प्राप्त कर सकते हैं ऊपर निर्दिष्ट होते हैं। मैं select() विधि पर कॉल कर सकता हूं लेकिन क्या वहां कोई तेज़ तरीका नहीं है?

धन्यवाद

उत्तर

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

इस आईडी संभालने अंतिम बनाए गए उपयोगकर्ता मिल जाएगा एक स्वत: incrementing पूर्णांक (डिफ़ॉल्ट) है।

यदि आप अंतिम सहेजे गए उपयोगकर्ता को सहेजना चाहते हैं, तो आपको उपयोगकर्ता को सहेजने के संकेत देने के लिए एक टाइमस्टैम्प जोड़ने की आवश्यकता है।


अद्यतन:

Peewee भी अब Postgres डेटाबेस के लिए RETURNING खंड का समर्थन करता है। आप किसी भी INSERT, UPDATE या DELETE क्वेरी पर RETURNING खंड जोड़ सकते हैं। डॉक्स की जाँच करें:

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

के बजाय फिर से क्वेरी करने डीबी, एक वैकल्पिक पीछा कर रहा है , मुझे लगता है कि यह एक बेहतर विकल्प है।

+1

पीवी अब भी 'रिटर्निंग' (केवल पोस्टग्रेस) का समर्थन करता है, जो INSERT, अद्यतन और हटाए गए प्रश्नों पर काम करता है। [यहां डॉक्स] (http://docs.peewee-orm.com/en/latest/peewee/querying.html#returning-clause)। – coleifer

+0

यह स्वीकार्य उत्तर होना चाहिए। –

0

मैं अपने User मॉडल अनुमान है कि इस तरह दिखता है:

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

लेकिन peewee जब तक आप अपने PrimaryKeyField वर्ग का उपयोग कैसे autoincrementing क्षेत्रों को संभालने के लिए पता नहीं है:

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

यह wasn ' मैं कहीं भी दस्तावेज मिल सकता है। Source

संबंधित मुद्दे