postgresql 如何在单个元素上更新SQLAlchemy Postgres数组?

byqmnocz  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(145)

sqlalchemy中没有ARRAY字段更新的文档。Idk,如何在sqlachemy orm中通过索引更新位置。只有可能更新整个数组,但我需要更新条目中的单个元素。
我在postgres文档中找到了一个例子:

SELECT * FROM sal_emp;
 name  |      pay_by_quarter       |                 schedule
-------+---------------------------+-------------------------------------------
 Bill  | {10000,10000,10000,10000} | {{meeting,lunch},{training,presentation}}
 Carol | {20000,25000,25000,25000} | {{breakfast,consulting},{meeting,lunch}}
UPDATE sal_emp SET pay_by_quarter[4] = 15000
WHERE name = 'Bill';

但是我没有找到如何在.values方法中切片或索引,只有关键字参数支持。

# sqlalchemy

update(SalEmp).values(pay_by_quarter=???).where(SalEmp.name=='Bill')

# Can't do like this:

update(SalEmp).values(SalEmp.pay_by_quarter[4]=15000).where(SalEmp.name=='Bill')
2j4z5cfb

2j4z5cfb1#

您可以通过传递一个dict(如{SalEmp.pay_by_quarter[4]: 15000}values)来实现这一点。
ORM查询如下所示
update(SalEmp).values({SalEmp.pay_by_quarter[4]: 15000}).where(SalEmp.name=='Bill')

相关问题