Python 如何在SQLAlchemy for PostgreSQL中不使用子查询从写入更新
我正在编写一个查询,通过计算表列的值与另一个表中的列之间的差值来更新表列。在原始SQL中,它如下所示: 使现代化 产品 设置 数量=产品.数量-订单\项目.数量 从…起 订购商品 哪里 order\u items.order\u id=%order\u id\u 1 s 和products.code=订单项目产品代码; 我查看了SQLAlchemy文档,发现了一个关于更新表达式的问题: WHERE子句可以引用多个表。对于支持此功能的数据库,将生成UPDATEFORM子句,或者在MySQL上生成多表更新。在不支持多表更新语句的数据库上,该语句将失败 我试图实现文档中所述的查询: 查询= 产品目录更新 .valuesquantity=产品\表c.数量-订单\项目\表c.数量 哪里 产品\表c.代码 ==选择[订单\项目\表格.c.产品\代码] 哪里 及_ 订单项目表c.订单id==订单id, 订单\项目\表c.产品\代码==产品\表c.代码, .as_标量 但不是一个简洁的更新。。。设置从表情上我得到了这个: 从sqlalchemy.dialogs导入postgresql strquery.compiledialect=postgresql.dialect 使现代化 产品 设置 数量=产品.数量-订单\项目.数量 哪里 产品代码= 选择 订单\项目。产品\代码 从…起 订购商品 哪里 order\u items.order\u id=%order\u id\u 1 s 和订单项目。产品代码=产品。代码 此外,此SQL查询并不完全正确,并且没有必需的FROM语句 因此,我试图找出我的查询表达式的错误所在,以及是否有可能在没有子查询的情况下在SQLAlchemy中实现与原始SQL等价的SQL。有什么想法吗 版本 操作系统:MacOS Python:3.8.x SQLAlchemy:1.3.20 数据库:PostgreSQL 11.xPython 如何在SQLAlchemy for PostgreSQL中不使用子查询从写入更新,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我正在编写一个查询,通过计算表列的值与另一个表中的列之间的差值来更新表列。在原始SQL中,它如下所示: 使现代化 产品 设置 数量=产品.数量-订单\项目.数量 从…起 订购商品 哪里 order\u items.order\u id=%order\u id\u 1 s 和products.code=订单项目产品代码; 我查看了SQLAlchemy文档,发现了一个关于更新表达式的问题: WHERE子句可以引用多个表。对于支持此功能的数据库,将生成UPDATEFORM子句,或者在MySQL上生成多
提前谢谢 看来我看错了文档。我发布的链接解释了相反的情况,并提供了为不支持更新的数据库编写查询的示例 我刚刚编写了以下查询: 查询= 产品目录更新 .valuesquantity=产品\表c.数量-订单\项目\表c.数量 .whereproducts\u table.c.code==订单\u项目\u table.c.product\u代码 .whereorder\u items\u table.c.order\u id==order\u id 并生成正确的SQL: 使现代化 产品 设置 数量=产品.数量-订单\项目.数量 从…起 订购商品 哪里 products.code=订单\项目.产品\代码 和订单项目。订单id=%order\u id\u 1 s