如何使用带有 python 的 SqlAlchemy 更新 table

How to update a table using SqlAlchemy with python

您好,我是使用 python 的 SQLAlchemy 新手。我想更新一个名为 Cars 的 table,如果有另一种更新 table 的方法,我希望得到一些反馈。我不确定 execute() 是否是更新的好方法,因为它需要查询。我到处搜索,但只是尝试一个简单的查询和更新。

这是我关注的图表:

这是我的代码:

from cars.models import Cars
from cars.models import CarType
from sqlalchemy.orm import session
from sqlalchemy.sql.expression import update
from sqlalchemy.sql.sqltypes import String, Text

# To update cars
def update_cars_models(session):
  db = session

  try:
    state = db.query(Cars).filter(Cars.state == "PRE_PROCESS")

    for row in state.all():
      if row.state == "PRE_PROCESS":

        # To add CarType object data
        car_update = CarType(1, "Subaru", "WHITE", "PRE_PROCESS")
        db.add(car_update)
        db.commit()

        # To update Cars object
        row.state = Cars.State.PROCESS #not sure if this how you use update
        db.commit()

  except SQLAlchemyError as error:
    print(f"Error querying: {error}")

  finally:
    db.close()

if __name__ == "__main__":

    # To update cars
    update_cars_models(session)

您不必查询所有行然后循环编辑每一行。您的代码描述了您想要更新那些状态为“PRE_PROCESS”

的行
car_update = { state = "PROCESS" }
rows_updated = (db.session.query
        .filter(Car.state == "PRE_PROCESS")
        .update(car_update)
    )

如果要更新特定ID的行,可以在filter

中写“Car.id == 1”