Python 使用存储过程保存ORM

Python 使用存储过程保存ORM,python,mysql,database,stored-procedures,sqlalchemy,Python,Mysql,Database,Stored Procedures,Sqlalchemy,我正在开发一个使用sqlalchemy与mysql数据库通信的Python web应用程序。到目前为止,我主要使用sqlalchemy的ORM层来与数据库对话。ORM对我最大的好处是开发速度,不必编写所有这些sql查询,然后将它们映射到模型 但是,最近我被要求更改设计,以便通过存储过程与数据库通信。有人知道是否有任何方法可以通过存储过程使用sqlalchemy ORM层来处理我的模型吗?是否有另一个Python库允许我这样做 在我看来,我应该能够编写自己的select、insert、update

我正在开发一个使用sqlalchemy与mysql数据库通信的Python web应用程序。到目前为止,我主要使用sqlalchemy的ORM层来与数据库对话。ORM对我最大的好处是开发速度,不必编写所有这些sql查询,然后将它们映射到模型

但是,最近我被要求更改设计,以便通过存储过程与数据库通信。有人知道是否有任何方法可以通过存储过程使用sqlalchemy ORM层来处理我的模型吗?是否有另一个Python库允许我这样做

在我看来,我应该能够编写自己的select、insert、update和delete语句,将它们附加到模型中,并让库完成其余的工作。我已经阅读了sqlalchemy的文档多次,但似乎找不到一种方法来实现这一点


这方面的任何帮助都将是巨大的

SQLAlchemy没有任何好方法将插入、更新和删除转换为存储过程调用。在映射器上添加{update,insert,delete}扩展的功能可能并不难,但是还没有人为此费心。我认为需要简单的DML语句通过存储过程相当愚蠢。它真的没有提供任何你用触发器做不到的东西

如果你不能避免这种愚蠢的行为,有一些方法可以让你使用SQLAlchemy来配合。不过,您将失去一些ORM功能。您可以使用查询(Obj)从存储过程结果构建ORM对象。从_语句(文本(“…”)开始,只需让语句中的列标签与您告诉SQLAlchemy映射的列名匹配即可

处理DML语句的一个选项是关闭自动刷新,而不是刷新。通过sessions.new、.dirty和.deleted属性查看更改的内容,以存储过程调用的形式发出相应语句,并在提交之前删除对象

或者您可以放弃SQLAlchemy状态跟踪,直接发出存储过程调用