Python 执行 mysql 存储过程
mysql 创建简单的临时表 tmp
create database test;
use test;
DROP TABLE IF EXISTS `tmp`;
CREATE TABLE `tmp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
INSERT INTO `tmp` VALUES (1, 'klvchen');
INSERT INTO `tmp` VALUES (2, 'lily');
INSERT INTO `tmp` VALUES (3, 'lucy');
INSERT INTO `tmp` VALUES (4, 'james');
INSERT INTO `tmp` VALUES (5, 'jim');
mysql 创建存储过程
delimiter $$ # 自定义 mysql 的分隔符
CREATE PROCEDURE p1(
in i1 int, # 仅用于传入参数用
in i2 int,
inout i3 int, # 既可以传入又可以当作返回值
out r1 int # 仅用于返回值用,外部传进来的值无用
)
BEGIN
DECLARE temp1 int;
DECLARE temp2 int default 0;
set temp1 = 1;
set r1 = i1 + i2 + temp1 + temp2;
set i3 = i3 + 100;
SELECT * FROM tmp;
end $$
delimiter ;
python 调用 mysql 存储过程
import pymysql
PY_MYSQL_CONN_DICT = {
"host" : '192.168.0.214',
"port" : 3306,
"user" : 'root',
"passwd" : '123456',
"db" : 'tmpdb'
}
conn = pymysql.connect(**PY_MYSQL_CONN_DICT)
cusor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 调用 p1 存储过程,传入4个参数
cusor.callproc('p1', args=(1, 2, 3, 4))
# 返回获得的集合,即存储函数中的 SELECT * FROM tmp; 结果
res1 = cusor.fetchall()
print(res1)
# 以 python 固定格式获取返回的值:@_存储过程名_0, 第一个返回值
cusor.execute("select @_p1_0, @_p1_1, @_p1_2, @_p1_3")
res2 = cusor.fetchall()
print(res2)
conn.commit()
cusor.close()
conn.close()
Python 执行 mysql 存储过程的更多相关文章
- JDBC连接执行MySQL存储过程报权限错误
今天在测试项目的时候 突然就报了一个错出来. User does not have access to metadata required to determine stored procedure ...
- JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- JDBC连接执行mysql存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,
分析:JDBC在调用存储过程时不光用户要有execute的权限,还需要对mysql.proc具有访问权限.否则它无法访问metadata 解决方案:给数据库用户赋权,赋执行mysql.proc表的se ...
- python 调用mysql存储过程返回结果集
存储过程: delimiter | ),)) begin select * from tb_test where mid = imid and user = iuser; end; | delimit ...
- MySQL存储过程(转)
一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...
- JDBC使用MySQL存储过程错误
JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedur ...
- Mysql 存储过程基本语法
delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: crea ...
- mysql存储过程 基本语法
话不多说 一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b& ...
- Mysql存储过程入门介绍
delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: crea ...
随机推荐
- centos7使用wordpress布署网站(2)
1.接下来需要配置数据库,为使用wordpress做准备 修改认证方式: vim .../phpMyAdmin/config.inc.php [...] $cfg['Servers'][$i]['au ...
- Microsoft Windows Server 2012 Ad域搭建
Microsoft Windows Server 2012 Ad域搭建 一.Active Directory概念 AD(活动目录):是一种组织资源信息的方法,目录的意义在于我们可以通过标题或者说搜索条 ...
- Ubuntu 16.04下GDB调试
在linux中还有一个更受大家欢迎的调试工具:GDB.GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具.可以用来调试C,C++程序. GDB功 ...
- 机器学习入门13 - 正则化:稀疏性 (Regularization for Sparsity)
原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-sparsity/ 1- L₁正 ...
- JDK9新特性实战:流关闭新姿势
做Java开发的都知道,每个资源的打开都需要对应的关闭操作,不然就会使资源一直占用而造成资源浪费,从而降低系统性能. 关于资源的关闭操作,从JDK7-JDK9有了不少的提升及简化. JDK6 在JDK ...
- Anaconda+MINGW+theano+keras安装
前言:这几天算是被这东西困扰的十分难受,博客园和csdn各种逛,找教程,大家说法不一,很多方法也不一定适用,有些方法有待进一步完善.这里我借鉴了许多大神们的方法,以及自己的一些心得,希望对你们有一些帮 ...
- npm jspdf报错
137073 warn optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.2 (node_modules\chokidar\node_modul ...
- mac Navicat 破解+汉化(亲测可用)
Navicat Premium 12 的版本 破解太麻烦,最后选择 Navicat Premium 11.0.16 下载:地址 提取码:h3rq ps:用的是功能,不是版本 为了一次就成功,请先执行下 ...
- Django--缓存设置
Django缓存机制 一. 缓存介绍 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中 ...
- 原生端与服务器通过sessionid实现session共享以及登录验证
注:原生端与服务器建立连接时产生的sessionid会变,跟上一次的不一样,为了保证sessionid一样,所以第一次服务器需要把sessionid返回给原生端,下一次与服务端会话时,原生端需要把这个 ...