Sqlalchemy - 使用过滤器更新行会产生列表索引错误
Sqlalchemy - Updating row with a filter produces List Index Error
我希望这是关于我的这个宠物项目的最后一个问题。
我正在尝试用当前时间更新 table 时钟时间(列 = time_out)。我想 select 我用 UUID4 创建的 UUID。当我 运行 代码时,我在 query.py (Sqlalchemy 的一部分)中的函数上得到 ListIndex 超出范围错误。我在我的代码下面列出了那个相当短的函数。
我的代码:
out = session.query(). \
filter(Clocktime.p_uuid == p_uuid). \
update(Clocktime.time_out == datetime.datetime.now())
session.add(out)
session.commit()
SQLalchemy 代码抛出错误:
def _entity_zero(self):
return self._entities[0]
Sqlalchemy 代码非常复杂,所以我还没有仔细研究它,但我的理论是它出于某种原因不喜欢我的过滤器。无论如何,我想不通 - 你们有什么想法吗?
我认为您的代码没有按照您的意愿执行。
有两种方法可以进行您想要的更新:
1) 直接在数据库上:
upd = (session.query(Clocktime)
.filter(Clocktime.p_uuid == p_uuid)
.update({"time_out": datetime.datetime.now()})
)
print("# of updated rows = {}".format(upd))
# session.commit()
2) 加载对象、更新值并提交会话
upd = (session.query(Clocktime)
.filter(Clocktime.p_uuid == p_uuid)
)
# assuming there should be exactly one object for given p_uuid
clockTime = upd.one()
clockTime.time_out = datetime.datetime.now()
session.commit()
我希望这是关于我的这个宠物项目的最后一个问题。
我正在尝试用当前时间更新 table 时钟时间(列 = time_out)。我想 select 我用 UUID4 创建的 UUID。当我 运行 代码时,我在 query.py (Sqlalchemy 的一部分)中的函数上得到 ListIndex 超出范围错误。我在我的代码下面列出了那个相当短的函数。
我的代码:
out = session.query(). \
filter(Clocktime.p_uuid == p_uuid). \
update(Clocktime.time_out == datetime.datetime.now())
session.add(out)
session.commit()
SQLalchemy 代码抛出错误:
def _entity_zero(self):
return self._entities[0]
Sqlalchemy 代码非常复杂,所以我还没有仔细研究它,但我的理论是它出于某种原因不喜欢我的过滤器。无论如何,我想不通 - 你们有什么想法吗?
我认为您的代码没有按照您的意愿执行。 有两种方法可以进行您想要的更新:
1) 直接在数据库上:
upd = (session.query(Clocktime)
.filter(Clocktime.p_uuid == p_uuid)
.update({"time_out": datetime.datetime.now()})
)
print("# of updated rows = {}".format(upd))
# session.commit()
2) 加载对象、更新值并提交会话
upd = (session.query(Clocktime)
.filter(Clocktime.p_uuid == p_uuid)
)
# assuming there should be exactly one object for given p_uuid
clockTime = upd.one()
clockTime.time_out = datetime.datetime.now()
session.commit()