sql >> Databáze >  >> RDS >> PostgreSQL

AKTUALIZACE .. LIMIT 1 s SqlAlchemy a PostgreSQL

recept na poddotaz je správný způsob, jak to udělat, nyní musíme tento dotaz sestavit pouze pomocí SqlAlchemy.

Začněme poddotazem:

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

A nyní jej použijte s as_scalar( ) s příkladem z update() docs :

from sqlalchemy import update

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

Vytiskněte dotaz a podívejte se na výsledek:

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

Užijte si to!



  1. Existují nějaké SQL Validátory, které dokážou zkontrolovat syntaxi proti více databázovým serverům?

  2. Má webová aplikace Azure PHP 7 ovladače Oracle?

  3. Jak najít název omezení na serveru SQL Server

  4. SQL:Jak sloučit duplikáty nerozlišující malá a velká písmena