相关文章推荐
善良的拐杖  ·  二十五、oracle ...·  昨天    · 
强健的大葱  ·  自訂日期格式 - Tableau·  1 月前    · 
近视的遥控器  ·  在.Net Core ...·  10 月前    · 
虚心的豌豆  ·  TypeScript ...·  10 月前    · 
酷酷的金鱼  ·  ASP.NET Core 实战-7.使用 ...·  11 月前    · 

使用pymysql调用存储过程

注意:存储过程需要在DECLARE定义变量之后添加set @@autocommit=1;,这是因为pymysql默认autocommit=0。

import pymysql
db = pymysql.connect(host='rm-******.mysql.rds.aliyuncs.com', port=3306, user='root',
                                 password='******', db='***')
cursor = db.cursor(pymysql.cursors.DictCursor)
cursor.callproc("proc_name", *args) # 参数为存储过程名称和存储过程接收的参数
db.commit()
# 获取数据
data = cursor.fetchall()
# 关闭数据库连接
db.close()

获取调用存储过程后的返回值

import pymysql
db = pymysql.connect(host='rm-******.mysql.rds.aliyuncs.com', port=3306, user='root',
                                 password='******', db='***')
cursor = db.cursor(pymysql.cursors.DictCursor)
cursor.callproc("proc_name", "param_0","param_1","param_2") # 参数为存储过程名称和存储过程接收的参数
db.commit()
# 获取数据
data = cursor.fetchall()
cursor.execute("select @_proc_name_0,@_proc_name_1,@_proc_name_2")# 查询调用存储过程后返回的参数
param_value = cursor.fetchone()
# 关闭数据库连接
db.close()

说明: 使用callproc调用存储过程时,要注意存储过程参数的类型和顺序要和数据库中存储过程的一致。获取返回值需要重新使用select语句查询。查询的返回值要根据传入位置确定,例如查询param_2这个参数经过存储过程处理后的返回值,要使用"select @_proc_name_2 "语句。查询字段规则是 @_+存储过程名称+_返回值在传入时的位置(从0计算)。因为param_2传入时是第3个参数,从0开始计算就是2,所以需要查询@_proc_name_2。

封装成方法后的代码

import pymysql
def callpro_sql(proc_name: str, return_sub: list, *args):
    调用存储过程
    :param proc_name: 存储过程名称
    :param return_sub: 返回值下标列表
    :param args: 存储过程参数
    :return:
        db = pymysql.connect(host='rm-****.mysql.rds.aliyuncs.com', port=3306, user='root', password='*****', db='*****')
        # 使⽤cursor()⽅法获取操作游标
        cursor = db.cursor(pymysql.cursors.DictCursor)
        cursor.callproc(proc_name, args)
        db.commit()
        # 获取数据
        data = cursor.fetchall()
        params = ",".join("@_{}_{}".format(proc_name, i) for i in return_sub)
        s_result_sql = "select {}".format(params)
        print(s_result_sql)
        cursor.execute(s_result_sql)
        result = cursor.fetchone()
        # 关闭数据库连接
        db.close()
    except Exception as e:
        data = 'error'
        result = {}
    return data, result
callpro_sql("test_proc", [1, 2], "param_0_test", "param_1_test", "param_2_test", "param_3_test", "param_4_test")
                                    本文实例讲述了Python通过调用mysql存储过程实现更新数据功能。分享给大家供大家参考,具体如下:一、需求分析由于管理费率配置错误,生成订单的还本付息表和订单表的各种金额,管理费之间的计算都有错误,需要进行数据订正。为此,为了造个轮子,以后省很多功夫,全部用程序去修正,不接入人工。二、带参数mysql 存储过程创建1、更新订单付息表(t_order_rapay)drop procedure i...
                                    print(cover) 作者:什么都干的派森 https://www.bilibili.com/read/cv13130463?from=search&spm_id_from=333.337.0.0 出处:bilibili。msq.operate('''insert into student (no, name) values (1, "刘华强");# 连接信息 [ip, 端口, 数据库名, 用户名, 密码]# 提交到数据库执行。# 获取所有记录列表。# 获取所有记录列表。# 提交到数据库执行。
                                    sql = """INSERT INTO [数据库].[文件名].[表名] ([column1],[column2],[column3],[column4]...)cursor.execute(f"exec 存储过程名称 @参数1='xxx',@参数2='xxx',@参数3='xxx',@参数4='xxx'")conn = pymssql.connect(server, user, password, "test01")  #获取连接。password = "#sql" # 连接密码。
conn = pymysql.connect(host= '127.0.0.1',port = 3306,
                       user = 'root',password = 'root',
                       database = 'test',charset = 'utf8')
cur = conn.cursor()
cur.callproc('T1')  # 调用存储过程
                                    使用Python执行存储过程使用Python执行存储过程[2部分]:1.执行存储过程,获取存储过程的结果集2.将返回值设置给了 @_存储过程名_序号 =#!/usr/bin/env python# -*- coding:utf-8 -*-import pymysqlconn = pymysql.connect(host='127.0.0.1', port=3306, user='root', p...
                                    今天项目使用到调用一个sql server的存储过程读取其中内容然后存到另一张表,作为一个看板使用的数据。百度了一圈,亲测下面方法可用!一 安装sql server的库
 pip install pymssql
二 配置数据库读取存储过程
import pymssql
"""配置"""
server='xxx'
user ='xxx'
password='xxx'
                                    我尝试使用csv作为数据源,并从mysql数据库调用一个存储过程来填充数据库。我当前正在获取异常:发生异常:(1318,“过程的参数数目不正确。”mydb.update_服务器;应为3,得到0')import pymysql#import myconnutilsimport datetimeimport xlrdimport reimport osimport csv#open csv filew...
                                    本文实例讲述了Python通过调用mysql存储过程实现更新数据功能。分享给大家供大家参考,具体如下:一、需求分析由于管理费率配置错误,生成订单的还本付息表和订单表的各种金额,管理费之间的计算都有错误,需要进行数据订正。为此,为了造个轮子,以后省很多功夫,全部用程序去修正,不接入人工。二、带参数mysql 存储过程创建1、更新订单付息表(t_order_rapay)drop procedure i...
                                    一、Python 调用存储过程
以SQL Server为例,创建存储过程 proc_test,入参为城市名称,返回该城市下面的行政区:
exec  proc_test @city='南京市' 
在Python中导入pymssql模块,使用callproc实现存储过程的参数传入和执行:
import pymssql
conn_43 = pymssql.connect(host='192.168.0.43',port='1433', user='sa', password='test123!@#', dat