sql >> Databasteknik >  >> RDS >> PostgreSQL

UPPDATERING .. LIMIT 1 med SqlAlchemy och PostgreSQL

receptet för underfrågan är det rätta sättet att göra det, nu behöver vi bara bygga den här frågan med SqlAlchemy.

Låt oss börja med underfrågan:

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

Och använd den nu med as_scalar( ) med exemplet från update() docs :

from sqlalchemy import update

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

Skriv ut frågan för att 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
)

Njut!



  1. Åtkomst nekad för användaren 'www-data'@'localhost – hur ska man hantera det?

  2. MySQL - VÄLJ, GÅ MED

  3. Återgå till readline version 6.x i Homebrew för att fixa Postgresql?

  4. Hur synkroniserar jag SQLite-databas på Android-telefon med MySQL-databas på servern?