You may hear the term "Unit of Work" tossed around with SQLAlchemy, often in contrast with Django. Basically, with Django (which you'll hear has the Active Record pattern), you grab an object from the database, modify it a bit, then call its save() method to commit your changes to the database. The SQLAlchemy model, which I won't disguise my love of, works a bit differently: you grab an object from the database using a Session object, which keeps track of that object. You modify the object, then call the session's commit() method. The session then goes over all the objects it's keeping track of, recognizes what's changed, then develops a set of distinct tasks to carry out our modifications (the units of work).
I love this, because it allows for some pretty great optimizations. With Django, if you create a bunch of objects, you can either call save() on them all, which means a query for every object, or you call a specialized batch method to commit them all at once. With SQLAlchemy, you create instances