gpt4 book ai didi

python - 使用 SQLAlchemy 使用 SQL 表本身的数据更新 SQL 表

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:31 25 4
gpt4 key购买 nike

我有一个简短的 SQL 脚本,它将 SQL 表中的选定列从一个 id (main_id=1)“复制”到另外两个 id (main_id=3 和同一个表的 4)。还有一些其他 id,它们是表主键的一部分。

该脚本使用 PostgreSQL 数据库运行良好。但是,我想使用 SQLAlchemy ORM 替换它,但我不知道如何执行此操作。

UPDATE "MyTable" AS T
SET "Varname_1" = Cell."Varname_1",
"Varname_2" = Cell."Varname_2"
FROM "MyTable" AS Cell
WHERE T.id_A = Cell.id_A AND
T.id_B = Cell.id_B AND
Cell.main_id = 1 AND
T.main_id IN (3, 4);

有人可以帮我“翻译”这个吗?

最佳答案

不确定您遇到了什么问题,因为我可以按照Multiple Table Updates中的示例来做到这一点和 Using Aliases and Subqueries本教程的部分内容:

import sqlalchemy
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy import alias
metadata = MetaData()

my_table = Table('MyTable', metadata,
Column('id_A', Integer),
Column('id_B', Integer),
Column('main_id', Integer),
Column('varname_1', String),
Column('varname_2', String),
)
cell = my_table.alias("cell")
stmt = my_table.update(). \
where(my_table.c.id_A == cell.c.id_A). \
where(my_table.c.id_B == cell.c.id_B). \
where(cell.c.main_id == 1). \
where(my_table.c.main_id.in_([3, 4])). \
values(varname_1=cell.c.varname_1,
varname_2=cell.c.varname_2)
print(str(stmt))
print(stmt.compile().params)

关于python - 使用 SQLAlchemy 使用 SQL 表本身的数据更新 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57476646/

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