gpt4 book ai didi

Python。 SQL Alchemy 未实现错误 : Operator 'getitem' is not supported on this expression

转载 作者:行者123 更新时间:2023-12-01 08:22:24 25 4
gpt4 key购买 nike

我通过sql alchemy在数据库中创建记录。下一步是尝试将创建的对象的 id 捕获到另一个表中,该表在创建的对象上具有 fk (assign_resource_to_user) 。这是我的代码:

from dev_tools.models.user import User
from dev_tools.models.resource Resource

resource = Resource(
code=self.message_body['code'],
description=self.message_body['description'],
crew_id=None,
catalog_resource_type_id=self.message_body['catalog_resource_type_id'],
catalog_resource_status_id=self.message_body['catalog_resource_status_id'],
created_at=datetime.utcnow(),
created_by=None,
is_available=self.message_body['is_available'],
)
self.db_session.add(resource)
self.db_session.flush()

assign_resource_to_user = self.db_session.query(
User
).filter(
User.id == self.user_info.id
).update(
User.resource_id == resource.id
)
self.db_session.add(assign_resource_to_user)

我有错误:

Traceback (most recent call last):
File "/home/Документы/project/ResourseManagment/rm-private-application-server/apps/controller/helpers/data_processing/action/custom/resource_from_a_user.py", line 227, in <module>
resources.create_record_in_db()
File "/home/Документы/project/ResourseManagment/rm-private-application-server/apps/controller/helpers/data_processing/action/custom/resource_from_a_user.py", line 211, in create_record_in_db
User.resource_id == resource.id
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 3486, in update
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/orm/persistence.py", line 1334, in exec_
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/orm/persistence.py", line 1405, in _do_pre_synchronize
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/orm/persistence.py", line 1540, in _additional_evaluators
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/orm/persistence.py", line 1473, in _resolved_values_keys_as_propnames
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/orm/persistence.py", line 1457, in _resolved_values
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/sql/operators.py", line 411, in __getitem__
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/sql/elements.py", line 694, in operate
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/sql/operators.py", line 411, in __getitem__
File "<string>", line 1, in <lambda>
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/sql/type_api.py", line 63, in operate
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/sql/default_comparator.py", line 192, in _getitem_impl
File "/home/Документы/project/venv/lib/python3.7/site-packages/SQLAlchemy-1.2.14-py3.7-linux-x86_64.egg/sqlalchemy/sql/default_comparator.py", line 197, in _unsupported_impl
NotImplementedError: Operator 'getitem' is not supported on this expression

此字符串错误:

).update(
User.resource_id == resource.id
)

也许有人知道如何解决它或有相同的问题并可以帮助我解决它。谢谢。

最佳答案

Query.update()期望将属性到值的映射作为第一个位置参数,但您已向其传递了 SQL 表达式语言对象。请注意,Query.update() 是批量操作,不会返回模型实例等,而是返回匹配的行数。因此,请执行以下操作:

self.db_session.query(
User
).filter(
User.id == self.user_info.id
).update(
{User.resource_id: resource.id},
synchronize_session=False # Change this according to your needs
)
# No add

关于Python。 SQL Alchemy 未实现错误 : Operator 'getitem' is not supported on this expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54540231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com