如何使用带有 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”
您好,我是使用 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”