Python调用MySql存储过程基本应用方式解读

开发 后端
我们今天将会通过几个步骤来为大家充分的分析一下Python调用MySql存储过程的方法,希望可以给大家带来一些帮助。

Python编程语言的出现,为开发人员带来了非常大的好处。对于初学者来说,掌握这一语言的应用其实是比较简单的。我们在这里先为大家介绍一种比较常用的应用技巧,Python调用MySql存储过程的实现方法。#t#

Python调用MySql存储过程配置环境:

1.mysql5.0 或者以上支持存储过程的版本

2.安装MySQL-python,目前支持到2.x

Python调用MySql存储过程步骤一.数据库准备

1.建立表

 

  1. view sourceprint?1 CREATE TABLE `Account` (   
  2. `id` BIGINT(20) NOT NULL AUTO_INCREMENT,   
  3. `sm_accountName` VARCHAR(100) COLLATE gbk_chinese_ci NOT NULL DEFAULT '',   
  4. `sm_password` TEXT COLLATE gbk_chinese_ci NOT NULL,   
  5. `sm_onlineTime` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',   
  6. PRIMARY KEY (`id`),   
  7. UNIQUE KEY `accountNameIndex` (`sm_accountName`)   
  8. )ENGINE=InnoDB  

 

2.建立存储过程

 

  1. view sourceprint?01 CREATE PROCEDURE `proctest`
    (IN i_id BIGINT, IN i_onlinetime BIGINT, OUT o_accname 
    VARCHAR(30), OUT o_accpwd VARCHAR(50))   
  2. NOT DETERMINISTIC   
  3. CONTAINS SQL   
  4. SQL SECURITY DEFINER   
  5. COMMENT ''   
  6. BEGIN   
  7. select sm_accountName,sm_password   
  8. into o_accname,o_accpwd   
  9. from `tbl_Account` where id=i_id and sm_onlineTime=
    i_onlinetime limit 1;   
  10. END;  

 

3.插入部分数据

 

  1. view sourceprint?1 INSERT INTO `Account` (`id`, 
    `sm_accountName`, `sm_password`, `sm_onlineTime`) VALUES   
  2. (1, 'luoshulin', 'asdfsdf', 0),   
  3. (2, 'test', '1', 0),   
  4. (3, 'adsfasd', 'asdf', 1);  

 

到这里数据库相关内容就准备好了接下去开始写python脚本

Python调用MySql存储过程步骤二.python脚本

 

  1. view sourceprint?01 #!/usr/bin/env python   
  2. # -*- coding: utf8 -*-   
  3. import MySQLdb   
  4. import time   
  5. import os, sys, string   
  6. def CallProc(id,onlinetime):   
  7. '''调用存储过程,   
  8. 输入参数:编号,在线时间,输出:帐号,密码;   
  9. 使用输出参数方式'''   
  10. accname=''   
  11. accpwd=''   
  12. conn = MySQLdb.connect(host='localhost',user='root',
    passwd='111111',db='ceshi')  
  13. cur =conn.cursor()   
  14. cur.callproc('proctest',(id,onlinetime,accname,accpwd))   
  15. cur.execute('select @_proctest_2,@_proctest_3')   
  16. data=cur.fetchall()   
  17. if data:   
  18. for rec in data:   
  19. accname=rec[0]   
  20. accpwd=rec[1]   
  21. cur.close()   
  22. conn.close();   
  23. return accname,accpwd   
  24. def CallProct(id,onlinetime):   
  25. '''调用存储过程,   
  26. 输入参数:编号,在线时间,输出:帐号,密码;   
  27. 使用select返回记录方式'''   
  28. accname=''   
  29. accpwd=''   
  30. conn = MySQLdb.connect(host='localhost',user='root',
    passwd='111111',db='ceshi')cur =conn.cursor()   
  31. cur.nextset()   
  32. cur.execute('call ptest(%s,%s)',(id,onlinetime))   
  33. data=cur.fetchall()   
  34. if data:   
  35. for rec in data:   
  36. accname=rec[0]   
  37. accpwd=rec[1]   
  38. cur.close()   
  39. conn.close();   
  40. return accname,accpwd   
  41. name,pwd=CallProct(1,0)   
  42. print name,pwd  

 

Python调用MySql存储过程步骤三.测试

将python脚本保存为 并执行可以看到结果

 

  1. view sourceprint?1 [root@redhat-dev python]# python pycallproc.py   
  2. luoshulin asdfsdf  

 

测试使用的是select返回记录的方式,对于使用输出参数返回结果情况也是一样的。

责任编辑:曹凯 来源: 博客园
相关推荐

2010-03-03 14:30:05

Python set类

2010-03-04 09:27:34

调用Python脚本

2010-03-03 13:22:08

Python正则表达式

2010-03-03 16:40:55

Python HTTP

2010-03-03 14:40:37

Python打包方法

2010-03-03 10:03:55

Python连接Sql

2010-03-03 13:32:08

Python压缩文件

2010-03-03 16:08:26

Python取得文件列

2010-03-01 16:04:31

WCF服务契约

2010-02-04 17:16:33

C++调用python

2010-02-02 14:45:35

C++ typeof

2010-01-11 11:02:27

VB.NET调用存储过

2013-12-12 16:10:21

Lua脚本语言

2010-01-25 13:45:04

Android单选框

2010-02-02 17:33:17

C++友元函数

2010-03-04 14:57:08

Python解密VBS

2010-06-04 13:50:24

MySQL存储过程

2010-07-08 15:24:17

SNMP trap

2010-03-05 15:47:59

Python Stri

2010-06-01 15:09:55

MySQL 存储过程
点赞
收藏

51CTO技术栈公众号