2010-04-11 8 views
6

Ich bin mit SQLAlchemyErste letzte Einsatz-ID mit 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() 

Wie kann ich die letzte Eingabe-ID erhalten, wenn ich rufe:

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

Antwort

12

Sie können user.id zugreifen (oder einen beliebigen Namen verwenden für Autoincremented Primärschlüsselfeld) nach dem Speichern user Objekt. SQLAlchemy füllt automatisch Felder, die von der Datenbank zugewiesen wurden.

Verwandte Themen