调用存储过程
虽然存储过程已经不再是推荐选项,但是很多时刻依旧会使用到,在SQLAlchemy中调用存储过程不是一件十分容易的事情,因为SQLAlchemy主要的目标是ORM,但存储过程返回的内容并不像数据表那样固定。所以在SQLAlchemy中调用存储过程更多的是使用原生数据库连接去完成。以下给出一个使用原生连接执行存储过程的示例。
connection = engine.raw_connection()
try:
cursor = connection.cursor()
cursor.callproc("my_procedure", ['x', 'y', 'z'])
results = list(cursor.fetchall())
cursor.close()
connection.commit()
finally:
connection.close()
注意,.callproc()
方法调用存储过程时,不能使用OUTPUT
返回数据。如果需要返回数据,需要使用原生SQL来调用存储过程,即使用db.session.execute()
完成调用。
对于原生数据库功能DBAPI的使用,可以参考相关的Python文档。