在 SQLAlchemy 中使用存储过程
首先,需要确保数据库中已经创建了存储过程。在 MySQL 中,可以通过以下语句创建一个简单的存储过程:
DELIMITER // CREATE PROCEDURE `test_procedure`(IN name VARCHAR(50)) BEGIN SELECT CONCAT('Hello, ', name, '!') AS greetings; END // DELIMITER ;
该存储过程接受一个字符串参数,返回一个拼接了问候语的字符串。现在可以使用 SQLAlchemy 来调用该存储过程。
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker # 创建数据库连接 engine = create_engine('mysql+pymysql://username:password@host:port/dbname') Session = sessionmaker(bind=engine) session = Session() # 调用存储过程 result = session.execute("CALL test_procedure('pidancode.com')") # 获取结果 for row in result: print(row[0])
该代码片段使用了 SQLAlchemy 的 session.execute() 方法来执行存储过程,同时使用 for 循环来获取结果集中每一行的第一个值,即拼接了问候语的字符串。
需要注意的是,MySQL 中的存储过程调用语法为 CALL procedure_name(args),其中 args 可以是逗号分隔的参数列表。在 Python 中,可以使用字符串来拼接这个语句并将其传递给 session.execute() 方法。
总的来说,使用 SQLAlchemy 调用存储过程非常简单。只需创建数据库连接、实例化 session 对象,然后使用 session.execute() 执行存储过程即可。
相关文章