python 連接mysql資料庫,存儲過程內創建臨時表,查詢不到數據

Python是編程語言,MySQL是資料庫,它們是兩種不同的技術;要想使Python操作回MySQL資料庫需要使用驅動。答這里選用PyMySQL驅動。
當然,最簡單的安裝方式還是使用pip命令。
> pip install PyMySQL

把install 換成show命令,查看PyMySQL安裝是否成功。

② 誰知道Python如何對MySQL存儲過程進行調用

環境:1.MySQL5.0 或者以上支持MySQL存儲過程的版本2.安裝MySQL-python,目前支持到2.x步驟:一.資料庫准備1.建立表view sourceprint?1 CREATE TABLE `` ( `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.建立MySQL存儲過程view sourceprint?01 CREATE PROCEDURE `proctest`(IN i_id BIGINT, IN i_onlinetime BIGINT, OUT o_accname VARCHAR(30), OUT o_accpwd VARCHAR(50)) 02 NOT DETERMINISTIC 03 CONTAINS SQL 04 SQL SECURITY DEFINER 05 COMMENT '' 06 BEGIN 07 select sm_accountName,sm_password 08 into o_accname,o_accpwd 09 from `tbl_Account` where id=i_id and sm_onlineTime=i_onlinetime limit 1; 10 END; 3.插入部分數據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腳本view sourceprint?01 #!/usr/bin/env python 02 # -*- coding: utf8 -*- 03 import MySQLdb 04 import time 05 import os, sys, string 06 def CallProc(id,onlinetime): 07 '''調用MySQL存儲過程,08 輸入參數:編號,在線時間,輸出:帳號,密碼;09 使用輸出參數方式'''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,accpwd24 def CallProct(id,onlinetime):25 '''調用MySQL存儲過程,26 輸入參數:編號,在線時間,輸出:帳號源碼天空,密碼;27 使用select返回記錄方式'''28 accname=''29 accpwd=''30 conn = MySQLdb.connect(host='localhost',user='root',passwd='111111',db='ceshi')31 cur =conn.cursor()32 cur.nextset()33 cur.execute('call ptest(%s,%s)',(id,onlinetime))34 data=cur.fetchall()35 if data:36 for rec in data:37 accname=rec[0]38 accpwd=rec[1]39 cur.close()40 conn.close();41 return accname,accpwd42 name,pwd=CallProct(1,0)43 print name,pwd三.測試將python腳本保存為 並執行可以看到結果view sourceprint?1 [root@redhat-dev python]# python pycallproc.py2 luoshulin asdfsdf測試使用的是select返回記錄的方式,對於使用輸出參數返回結果情況也是一樣的。

③ Python如何使用cx_Oracle調用存儲過程,入參為自定義參數

table of number(10) 你的類型不就是一個數字類型么

cursor.callproc("sp_get_data",[???,cur]) 這里你直接傳遞專一個整型 試屬試 比如 cursor.callproc("sp_get_data",[10,cur])

④ python使用cx_oracle調用存儲過程的問題

zs = cursor.var(cx_Oracle.CURSOR)
cursor.callproc('proc_query_news',[zs])
第二個參數是游標啊,其他參數放後面,沒有可以省略

⑤ python 如何執行復雜sqlserver語句

很簡單
將以上語句封裝為存儲過程
再使用python調用即可

⑥ python中 pyodbc 如何調用儲存過程

dbapi支持存儲過程,但是不是所有的庫都實現了這個功能。我現在用的pyodbc就沒有實現,但是可以直接寫pl/sql,我現在是在plsql里調用存過 差不多這樣。


execute(「」「
declare
v_pltitemtwms_pltitem%rowtype;
begin
調用存過
end;」「」)

⑦ 如何使用python調用mysql存儲過程

mysql 存儲過程是用 call 調用,函數是用 select 調用。直接寫成語句就ok.如 過程名為 abcabc,那麼調用就是 cal abcabc;