2010-04-11 18 views
6

के साथ पिछले डालने आईडी हो रही है मैं SQLAlchemySQLAlchemy

import hashlib 
import sqlalchemy as sa 
from sqlalchemy import orm 

from allsun.model import meta 


t_user = sa.Table("users",meta.metadata,autoload=True) 

class Duplicat(Exception): 
pass 
class LoginExistsException(Exception): 
pass 
class EmailExistsException(Exception): 
pass 

class User(object): 
""" 
def __setattr__(self, key, value): 
    if key=='password' : 
    value=unicode(hashlib.sha512(value).hexdigset()) 
    object.__setattr__(self,key,value) 
""" 
def loginExists(self): 
    try: 
    meta.Session.query(User).filter(User.login==self.login).one() 
    except orm.exc.NoResultFound: 
    pass 
    else: 
    raise LoginExistsException() 

def emailExists(self): 
    try: 
    meta.Session.query(User).filter(User.email==self.email).one() 
    except orm.exc.NoResultFound: 
    pass 
    else: 
    raise EmailExistsException() 


def save(self): 
    meta.Session.begin() 
    meta.Session.save(self) 
    try: 
    meta.Session.commit() 
    except sa.exc.IntegrityError: 
    raise Duplicat() 

मैं पिछले डाला आईडी जब मैं फोन कैसे प्राप्त कर सकते हैं का उपयोग कर रहा:

user = User() 
user.login = request.params['login'] 
user.password = hashlib.sha512(request.params['password']).hexdigest() 
user.email = request.params['email'] 
user.save() 

उत्तर

12

आप उपयोग कर सकते हैं user.id (या जो भी नाम आप का उपयोग autoincremeted प्राथमिक कुंजी फ़ील्ड के लिए) user ऑब्जेक्ट को सहेजने के बाद। SQLAlchemy स्वचालित रूप से डेटाबेस द्वारा आवंटित फ़ील्ड भरता है।