SQLAlchemy terms defined

20.02.20181 Min Read — In Programming

In January of last year I was working on a project that used SQLAlchemy to manage database interactions. Since many of the terms were new to me back then, I thought it would be handy to define a few of them here.

ORM - Object-Relational Mapping

Provides an intermediary between the object-oriented code and the SQL statements. In practical terms, this allows us to manipulate our objects, and the corresponding SQL command to replicate the actions we've taken will be generated by the ORM, which in this instance is SQLAlchemy.

Engine

The object which manages connections to the database. It is used to control and manage the database's resources and DBAPI connections. Usually, there's only one per application.

Session

Represents a series of transactions with the database. Holds all objects which have yet to be written to the database. The session is a staging area where objects can be added and manipulated before pushing the session to the database as a series of SQL statements emitted by the ORM.

Sessionmaker

Factory object to create sessions. Creates new sessions as needed once instantiated along with the engine. Usually, there's only one per application.

Transactions and Object States

Detached

An object in the database, but not part of any session.

Transient

Created within the session, but not yet saved to the database.

Pending

An object that has been added to the session using the add() method.

Persistent

An object in the session that is saved in the database.