sql >> Database teknologi >  >> RDS >> PostgreSQL

OPDATERING .. LIMIT 1 med SqlAlchemy og PostgreSQL

underforespørgselsopskriften er den rigtige måde at gøre det på, nu mangler vi kun at bygge denne forespørgsel med SqlAlchemy.

Lad os starte med underforespørgslen:

sq = ssn.query(Log.id)  \
    .order_by(Log.id.desc())  \
    .limit(1)  \
    .with_for_update()

Og brug det nu med as_scalar( ) med eksemplet fra update() docs :

from sqlalchemy import update

q = update(Log)  \
    .values({'analyzed': True})  \
    .where(Log.id == sq.as_scalar())

Udskriv forespørgslen for at se resultatet:

UPDATE logs 
SET analyzed=:analyzed 
WHERE logs.id = (
    SELECT logs.id 
    FROM logs ORDER BY logs.id DESC 
    LIMIT :param_1 
    FOR UPDATE
)

God fornøjelse!



  1. Forskellen mellem numerisk, float og decimal i SQL Server

  2. Oracle SQL til kontinuerlig gruppering

  3. Er der en præstationsforskel mellem BETWEEN og IN med MySQL eller i SQL generelt?

  4. Hvordan kan jeg aktivere MySQLi-udvidelsen i PHP 7?