在 SQLAlchemy 中使用存储过程

2023-04-05 00:00:00 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() 执行存储过程即可。

相关文章