1. 程式人生 > 資料庫 >帶你徹底搞懂python操作mysql資料庫(cursor遊標講解)

帶你徹底搞懂python操作mysql資料庫(cursor遊標講解)

1、什麼是遊標?

一張圖講述遊標的功能:

圖示說明:

2、使用遊標的好處?

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

3、利用python連線資料庫,經常會使用遊標功能

1)以python連線mysql資料庫為例

2)使用遊標的操作步驟

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

① 連線資料庫,建立一個數據庫物件

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

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

② 開啟遊標功能,建立遊標物件

# 這裡使用的是資料庫物件db中的cursor()方法,
cursor = db.cursor()

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

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

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

④ 使用fetchone()或fetchall()獲取資料

# 一次性獲取一條資料
a = cursor.fetchone()

# 一次性獲取所有資料
a = cursor.fetchall()

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

⑤ 斷開資料庫,釋放資源

db.close()

3)案例講解

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

① student表

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

db = pymysql.connect(host='localhost',charset='utf8')
cursor = db.cursor()
cursor.execute('select count(*) from student')
aa = cursor.fetchone()
print(aa)

# 注意這一句一定是在迴圈之外,不能放到迴圈裡面。想想這是為什麼?
cursor.execute('select sname,ssex from student')  
for i in range(aa[0]):
  a,b = cursor.fetchone()
  if b == "女":
    a = "我叫{},我是一個學生!".format(a)
    print(a)
db.close()

結果如下:

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

db = pymysql.connect(host='localhost',charset='utf8')
cursor = db.cursor()
cursor.execute('select sname,ssex from student')
aa = cursor.fetchall()
# print(aa)
for a,b in aa:
  if b == "女":
    a = "我叫{},我是一個學生!".format(a)
    print(a)
db.close()

結果如下:

④ 結果分析

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

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