/ 中存储网

Python调用MySQL存储过程基本使用方法

2014-07-13 15:47:09 来源:中存储网

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

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

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

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

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

1.建立表

 CREATE TABLE `Account` (   

`id` BIGINT(20) NOT NULL AUTO_INCREMENT,   

`sm_accountName` VARCHAR(100) COLLATE gbk_chinese_ci NOT NULL DEFAULT '',   

`sm_password` TEXT COLLATE gbk_chinese_ci NOT NULL,   

`sm_onlineTime` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',   

PRIMARY KEY (`id`),   

UNIQUE KEY `accountNameIndex` (`sm_accountName`)   

)ENGINE=InnoDB  

2.建立存储过程

view sourceprint?01 CREATE PROCEDURE `proctest`
(IN i_id BIGINT, IN i_onlinetime BIGINT, OUT o_accname 
VARCHAR(30), OUT o_accpwd VARCHAR(50))   

NOT DETERMINISTIC   

CONTAINS SQL   

SQL SECURITY DEFINER   

COMMENT ''   

BEGIN   

select sm_accountName,sm_password   

into o_accname,o_accpwd   

from `tbl_Account` where id=i_id and sm_onlineTime=
i_onlinetime limit 1;   

END;  

3.插入部分数据

 INSERT INTO `Account` (`id`, 
`sm_accountName`, `sm_password`, `sm_onlineTime`) VALUES   

(1, 'luoshulin', 'asdfsdf', 0),   

(2, 'test', '1', 0),   

(3, 'adsfasd', 'asdf', 1);  

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

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

view sourceprint?01 #!/usr/bin/env python   

# -*- coding: utf8 -*-   

import MySQLdb   

import time   

import os, sys, string   

def CallProc(id,onlinetime):   

'''调用存储过程,   

输入参数:编号,在线时间,输出:帐号,密码;   

使用输出参数方式'''   

accname=''   

accpwd=''   

conn = MySQLdb.connect(host='localhost',user='root',
passwd='111111',db='ceshi')  

cur =conn.cursor()   

cur.callproc('proctest',(id,onlinetime,accname,accpwd))   

cur.execute('select @_proctest_2,@_proctest_3')   

data=cur.fetchall()   

if data:   

for rec in data:   

accname=rec[0]   

accpwd=rec[1]   

cur.close()   

conn.close();   

return accname,accpwd   

def CallProct(id,onlinetime):   

'''调用存储过程,   

输入参数:编号,在线时间,输出:帐号,密码;   

使用select返回记录方式'''   

accname=''   

accpwd=''   

conn = MySQLdb.connect(host='localhost',user='root',
passwd='111111',db='ceshi')cur =conn.cursor()   

cur.nextset()   

cur.execute('call ptest(%s,%s)',(id,onlinetime))   

data=cur.fetchall()   

if data:   

for rec in data:   

accname=rec[0]   

accpwd=rec[1]   

cur.close()   

conn.close();   

return accname,accpwd   

name,pwd=CallProct(1,0)   

print name,pwd  

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

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

 [root@redhat-dev python]# python pycallproc.py   

luoshulin asdfsdf  

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