How to query database by id using SqlAlchemy? How to query database by id using SqlAlchemy? python python

How to query database by id using SqlAlchemy?


Query has a get function that supports querying by the primary key of the table, which I assume that id is.

For example, to query for an object with ID of 23:

User.query.get(23)

Note: As a few other commenters and answers have mentioned, this is not simply shorthand for "Perform a query filtering on the primary key". Depending on the state of the SQLAlchemy session, running this code may query the database and return a new instance, or it may return an instance of an object queried earlier in your code without actually querying the database. If you have not already done so, consider reading the documentation on the SQLAlchemy Session to understand the ramifications.


You can query an User with id = 1 like this

session.query(User).get(1)


get() is not as your expected sometimes:

if your transaction was done:

>>> session.query(User).get(1)[SQL]: BEGIN (implicit)[SQL]: SELECT user.id AS user_id, user.name AS user_name, user.fullname AS user_fullnameFROM userWHERE user.id = ?[SQL]: (1,)<User(u'ed', u'Ed Jones')>

if you are in a transaction(get() will give you the result object in memory without query the database):

>>> session.query(User).get(1)<User(u'ed', u'Ed Jones')>

better to use this:

>>> session.query(User.name).filter(User.id == 1).first()[SQL]: SELECT user.name AS user_nameFROM userWHERE user.id = ? LIMIT ? OFFSET ?[SQL]: (1, 1, 0)(u'Edwardo',)