2010-04-11 5 views
6

J'utilise SQLAlchemyObtenir la dernière id insert avec SQLAlchemy

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() 

Comment puis-je obtenir le dernier id Inséré quand je l'appelle:

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

Répondre

12

Vous pouvez accéder user.id (ou quel que soit le nom que vous utilisez pour le champ de clé primaire autoincrémé) après avoir enregistré l'objet user. SQLAlchemy remplit automatiquement les champs attribués par la base de données.

Questions connexes