系統城裝機大師 - 唯一官網:www.farandoo.com!

當前位置:首頁 > 數據庫 > Mysql > 詳細頁面

帶你徹底搞懂python操作mysql數據庫(cursor游標講解)

時間:2020-01-09來源:系統城作者:電腦系統城

1、什么是游標?

一張圖講述游標的功能:

圖示說明:

2、使用游標的好處?

如果不使用游標功能,直接使用select查詢,會一次性將結果集打印到屏幕上,你無法針對結果集做第二次編程。使用游標功能后,我們可以將得到的結果先保存起來,然后可以隨意進行自己的編程,得到我們最終想要的結果集。

3、利用python連接數據庫,經常會使用游標功能

1)以python連接mysql數據庫為例

2)使用游標的操作步驟

  • 首先,使用pymysql連接上mysql數據庫,得到一個數據庫對象。
  • 然后,我們必須要開啟數據庫中的游標功能,得到一個游標對象。
  • 接著,使用游標對象中的execute()方法,去執行某個SQL語句,系統會根據你的SQL語句,找到這些匹配行,給你存儲起來,而不是一次性的打印到頻幕上。當你什么時候需要這個結果中的數據的時候,你就去獲取它。
  • 最后,就是獲取結果集中的數據了,這里有兩種方法獲取結果集中的數據。一個是fetchone(),該方法一次獲取一條記錄,每一條記錄是一個元組形式的數據,每獲取一條記錄游標會往前移動一格,等待獲取下一條記錄;一個是fetchall()方法,能夠一次性的獲取所有的數據,該方法返回的是一個元組列表。
  • 當完成所有操作后,記得斷開數據庫的連接,釋放資源。

① 連接數據庫,創建一個數據庫對象

 

 
  1. db = pymysql.connect(host='localhost',user='root',db='huangwei',
  2. password='123456',port=3306,charset='utf8')

注意:我們要操作的是huangwei這個數據庫中的表,因此在連接的時候使用db這個參數來指明要使用哪一個數據庫;由于mysql數據庫就裝在本機上,因此可以寫localhost,當然你也可以寫成主機名,或者主機ip;

② 開啟游標功能,創建游標對象


 
  1. # 這里使用的是數據庫對象db中的cursor()方法,
  2. cursor = db.cursor()

③ 使用execute()方法,執行SQL語句


 
  1. cursor.execute('select sname,ssex from student')

注意:當開啟游標功能執行這個SQL語句后,系統并不會將結果直接打印到頻幕上,而是將上述得到的結果,找個地方存儲起來,提供一個游標接口給我們,當你需要獲取數據 的時候,就可以從中拿數據。

④ 使用fetchone()或fetchall()獲取數據


 
  1. # 一次性獲取一條數據
  2. a = cursor.fetchone()
  3.  
  4. # 一次性獲取所有數據
  5. a = cursor.fetchall()
  6.  

注意:使用游標獲取數據,需要用一個變量將結果存儲起來,才能被我們拿來做二次使用,這里在下面的案例中會體現出來。

⑤ 斷開數據庫,釋放資源


 
  1. db.close()

3)案例講解

需求:以操做huangwei數據庫中的student表為例 。完成【篩選出女生,同時將sname以這種形式輸出“我叫周梅,我是一個學生!”】這個需求。

① student表

 

② 使用fetchone()方法,獲取SQL查詢結果集中的數據


 
  1. db = pymysql.connect(host='localhost',user='root',db='huangwei',
  2. password='123456',port=3306,charset='utf8')
  3. cursor = db.cursor()
  4. cursor.execute('select count(*) from student')
  5. aa = cursor.fetchone()
  6. print(aa)
  7.  
  8. # 注意這一句一定是在循環之外,不能放到循環里面。想想這是為什么?
  9. cursor.execute('select sname,ssex from student')
  10. for i in range(aa[0]):
  11. a,b = cursor.fetchone()
  12. if b == "女":
  13. a = "我叫{},我是一個學生!".format(a)
  14. print(a)
  15. db.close()
  16.  

結果如下:

③ 使用fetchall()方法,獲取SQL查詢結果集中的數據


 
  1. db = pymysql.connect(host='localhost',user='root',db='huangwei',
  2. password='123456',port=3306,charset='utf8')
  3. cursor = db.cursor()
  4. cursor.execute('select sname,ssex from student')
  5. aa = cursor.fetchall()
  6. # print(aa)
  7. for a,b in aa:
  8. if b == "女":
  9. a = "我叫{},我是一個學生!".format(a)
  10. print(a)
  11. db.close()

 結果如下:

④ 結果分析

通過上述操作可以發現,這種游標功能可以幫助我們對SQL語句得到的結果集,進行二次開發,然后通過靈活的python語法,得到任何我們最終想要的結果集。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。

分享到:

相關信息

系統教程欄目

欄目熱門教程

人氣教程排行

站長推薦

熱門系統下載

jlzzjlzz亚洲乱熟在线播放