SQLAlchemy-执行存储过程并填充类

时间:2018-08-19 15:13:16

标签: python sql stored-procedures orm sqlalchemy

有什么方法可以执行存储过程并找回类吗?

我尝试过:

session.query(MyClass).from_statement(...)

myclass定义为:

MyClass(Base):
     id = Column(Integer)
     name = Column(String)
    ...

我知道我应该放:

__tablename__ ‘sometable’

但是没有表,因为所有行都是存储过程调用的结果。你知道解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:0)

Michael Bayer REPO所有者

SQLAlchemy目前不支持除Oracle之外的任何后端上的OUT参数。为了现在使用OUT参数,您需要使用DBAPI函数callproc(),请参见http://initd.org/psycopg/docs/cursor.html#cursor.callproc

您的函数应如下所示:

def execproc(procname, engine, queryParams=[]):
    connection = engine.raw_connection()
    cursor = connection.cursor()
    try:
        cursor.callproc(procname, queryParams)
        rows = list(cursor.fetchall())
        cursor.close()
        connection.commit()
        return rows
    finally:
        connection.close()