自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python調(diào)用MySql存儲過程基本應用方式解讀

開發(fā) 后端
我們今天將會通過幾個步驟來為大家充分的分析一下Python調(diào)用MySql存儲過程的方法,希望可以給大家?guī)硪恍椭?/div>

Python編程語言的出現(xiàn),為開發(fā)人員帶來了非常大的好處。對于初學者來說,掌握這一語言的應用其實是比較簡單的。我們在這里先為大家介紹一種比較常用的應用技巧,Python調(diào)用MySql存儲過程的實現(xiàn)方法。#t#

Python調(diào)用MySql存儲過程配置環(huán)境:

1.mysql5.0 或者以上支持存儲過程的版本

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

Python調(diào)用MySql存儲過程步驟一.數(shù)據(jù)庫準備

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.插入部分數(shù)據(jù)

 

  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);  

 

到這里數(shù)據(jù)庫相關內(nèi)容就準備好了接下去開始寫python腳本

Python調(diào)用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. '''調(diào)用存儲過程,   
  8. 輸入?yún)?shù):編號,在線時間,輸出:帳號,密碼;   
  9. 使用輸出參數(shù)方式'''   
  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. '''調(diào)用存儲過程,   
  26. 輸入?yún)?shù):編號,在線時間,輸出:帳號,密碼;   
  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調(diào)用MySql存儲過程步驟三.測試

將python腳本保存為 并執(zhí)行可以看到結(jié)果

 

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

 

測試使用的是select返回記錄的方式,對于使用輸出參數(shù)返回結(jié)果情況也是一樣的。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-03-03 14:30:05

Python set類

2010-03-04 09:27:34

調(diào)用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 16:08:26

Python取得文件列

2010-03-03 13:32:08

Python壓縮文件

2010-03-01 16:04:31

WCF服務契約

2010-02-02 14:45:35

C++ typeof

2010-02-04 17:16:33

C++調(diào)用python

2013-12-12 16:10:21

Lua腳本語言

2010-01-11 11:02:27

VB.NET調(diào)用存儲過

2010-01-25 13:45:04

Android單選框

2010-02-02 17:33:17

C++友元函數(shù)

2010-03-04 14:57:08

Python解密VBS

2010-07-08 15:24:17

SNMP trap

2010-06-01 15:09:55

MySQL 存儲過程

2010-03-05 15:47:59

Python Stri

2010-06-04 13:50:24

MySQL存儲過程
點贊
收藏

51CTO技術棧公眾號