I wish this help you From the documentation for
update():
from sqlalchemy_app import engine
import sqlalchemy as sa
metadata = sa.MetaData()
receipt = sa.Table(
"receipt",
metadata,
sa.Column("id", sa.Integer, primary_key=True),
sa.Column("something", sa.Integer),
)
returns = sa.Table(
"returns",
metadata,
sa.Column("id", sa.Integer, primary_key=True),
sa.Column("receipt_id", sa.Integer, sa.ForeignKey('receipt.id')),
sa.Column("somethingelse", sa.Integer)
)
if __name__ == "__main__":
metadata.drop_all(engine)
metadata.create_all(engine)
with engine.connect() as conn:
conn.execute(
receipt.insert(
values=[{"id": 1, "something": 1}]
)
)
conn.execute(
returns.insert(
values=[{"id": 1, "receipt_id": 1, "somethingelse": 99}]
)
)
conn.execute(
sa.update(receipt)
.values({receipt.c.something: 3, returns.c.somethingelse: 4})
.where(sa.and_(receipt.c.id == 1, returns.c.id == 1))
)
2019-08-17 11:27:39,573 INFO sqlalchemy.engine.base.Engine UPDATE receipt, returns SET returns.somethingelse=%(returns_somethingelse)s, receipt.something=%(something)s WHERE receipt.id = %(id_1)s AND returns.id = %(id_2)s
2019-08-17 11:27:39,582 INFO sqlalchemy.engine.base.Engine {'returns_somethingelse': 4, 'something': 3, 'id_1': 1, 'id_2': 1}
UPDATE receipt SET somethingelse=:returns_somethingelse, something=:something FROM returns WHERE receipt.id = :id_1 AND returns.id = :id_2
from sqlalchemy.dialects import mysql
print(statement.compile(dialect=mysql.dialect())
UPDATE receipt, returns SET returns.somethingelse=%s, receipt.something=%s WHERE receipt.id = %s AND returns.id = %s