1、存儲過程:
優勢:只要傳不多的數據到數據庫就能夠了 缺點:dba管理數據庫的時候可能會對數據庫進行了更改了那一坨sql語句。python
2、建立存儲過程:
一、簡單
建立存儲過程:mysql
Python中使用結果集:sql
1 # 2 import pymysql 3 4 #查 5 conn = pymysql.connect(host="localhost",user='root',password='123456',database="db5",charset='utf8') 6 #遊標 7 cursor = conn.cursor() 8 #鏈接數據庫成功 9 10 #執行存儲過程 11 cursor.callproc('p1') 12 conn.commit() 13 14 15 #獲取結果集 16 result = cursor.fetchall() 17 print(result) 18 19 20 #關閉數據庫 21 cursor.close() 22 conn.close()
2,傳參數:(in,out,inout三個關鍵字)
建立存儲過程:數據庫
直接在mysql數據庫中調用並傳參:
python中調用並傳參:
1 import pymysql 2 3 #查 4 conn = pymysql.connect(host="localhost",user='root',password='123456',database="db5",charset='utf8') 5 #遊標 6 cursor = conn.cursor() 7 #鏈接數據庫成功 8 9 #執行存儲過程 10 cursor.callproc('p2',(12,2)) 11 conn.commit() 12 13 14 #獲取結果集 15 result = cursor.fetchall() 16 print(result) 17 18 19 #關閉數據庫 20 cursor.close() 21 conn.close()
運行結果:fetch
三、參數 out
python中的參數out:
1 import pymysql 2 3 #查 4 conn = pymysql.connect(host="localhost",user='root',password='123456',database="db5",charset='utf8') 5 #遊標 6 cursor = conn.cursor() 7 #鏈接數據庫成功 8 9 #執行存儲過程 10 cursor.callproc('p3',(12,2)) 11 #獲取結果集 12 r1 = cursor.fetchall() 13 print(r1) 14 15 16 #拿存儲過程out回來的結果集 17 #@_p3_0表示查詢p3的第個參數,@_p3_1表示第二個參數 18 cursor.execute('select @_p3_0,@_p3_1') 19 #獲取結果集 20 r2 = cursor.fetchall() 21 print(r2)
22 23 24 #關閉數據庫 25 cursor.close() 26 conn.close()
4,參數inout:inout即能往裏面傳值也能往外面傳值
好比 out n2 int;set @v1=10;給n2傳了一個值10,假設有print的時候(沒有print),當print (n2)的時候是沒有值的,而intout n2 int的時候print (n2)是有值的。spa