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

创新互联建站从2013年成立,先为璧山等服务建站,璧山等地企业,进行企业商务咨询服务。为璧山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
Python调用MySql存储过程配置环境:
1.mysql5.0 或者以上支持存储过程的版本
2.安装MySQL-python,目前支持到2.x
Python调用MySql存储过程步骤一.数据库准备
1.建立表
- view sourceprint?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.插入部分数据
- view sourceprint?1 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脚本保存为 并执行可以看到结果
- view sourceprint?1 [root@redhat-dev python]# python pycallproc.py
 - luoshulin asdfsdf
 
测试使用的是select返回记录的方式,对于使用输出参数返回结果情况也是一样的。
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号