Hi,

I have an existing piece of functionality but I am wondering if there
are ways to improve the code. A short summary what I have. I modelled
a person class which can have different roles, one being a student
role, another one being an employee role, an alumni role and so on.
Now I am trying to retrieve all persons which have an employee role
but only those that do not have the alumni role.

This is what I came up with:

    query = session.query(Person).join('roles')
    alumnis =
query.filter(Role.roleID==alumni_table.c.roleID).order_by(Person.lastName).all()
    tmp = query.filter(Role.roleID==employee_table.c.roleID).all()
    employees = list(set(tmp) - set(alumnis))
    employees.sort(key=operator.attrgetter('lastName'))

It is working as expected but I thought there must be better ways to
do it. Instead of letting python do the work I would like to pass this
to sql. I found except_ in the sql expression api but I do not know
where to start with that. So if there is somebody out there who has a
smart idea how to improve the code, let me know...

Thanks and Greetings, Jan

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to