|
本帖最后由 zhgc 于 2019-7-10 10:51 编辑
范例SP如下,要能处理SP中人select返回,以及OUT和INOUT参数
- DELIMITER $
- DROP PROCEDURE IF EXISTS `sfc`.`TEST_PY`$
- CREATE PROCEDURE `sfc`.`TEST_PY`(
- IN A INT,
- INOUT B INT,
- OUT C INT
- )
- BEGIN
- SET B:=A*10+B;
- SET C:=A*100;
- select a,b,c from dual
- union
- select 1,1,1 from dual;
- END$
- DELIMITER ;
复制代码
Python脚本:
- import MySQLdb
- db_config = {
- 'host': '192.168.2.10',
- 'user': 'root',
- 'passwd': 'xxxx',
- 'db': 'sfc',
- 'charset': 'utf8'
- }
- conn=MySQLdb.connect(**db_config)
- cursor = conn.cursor()
- # 执行存储过程
- row = cursor.callproc("test_py",(1,2,3))
- print(row)
- # 存储过程的查询结果
- selc = cursor.fetchall()
- print(selc)
- # 获取存储过程返回
- effect_row = cursor.execute('select @_test_py_0, @_test_py_1, @_test_py_2')
- # 取存储过程返回值
- result = cursor.fetchone()
- print(result)
- conn.commit()
- cursor.close()
- conn.close()
复制代码
得到的结果是:
(1, 2, 3)
((1, 12, 100), (1, 1, 1))
(1, 12, 100)
所以结论是:
1.row就显示的参数
2.查返回SP中的查询数据,用cursor.fetchall()
3.得到OUT/INOUT的参数,用@_SPNAME_ParamIndex
|
|