Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
- fetchone(): 該方法獲取下一個查詢結果集。結果集是一個對象
- fetchall(): 接收全部的返回結果行.
- rowcount: 這是一個只讀屬性,並返回執行execute()方法后影響的行數。

1:使用fetchone()方法獲取結果集
import pymysql # 打開數據庫連接 db = pymysql.connect("localhost", "root", "123456", "test") # 使用cursor()方法獲取操作游標 cursor = db.cursor() # SQL 查詢語句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # 執行SQL語句 cursor.execute(sql) print(cursor.rownumber) result = cursor.fetchone() while result!=None: print(result, cursor.rownumber) result = cursor.fetchone() result = cursor.fetchone() print(result, cursor.rownumber) result = cursor.fetchone() print(result, cursor.rownumber) except: print ("Error: unable to fetch data") # 關閉數據庫連接 db.close()
輸出結果:
0
('Mac', 'Mohan', 20, 'M', 2000.0) 1
('Marry', 'Mohan', 32, 'M', 3000.0) 2
('Bob', 'Mohan', 21, 'F', 4000.0) 3
None 3
None 3
結論:執行cursor.execute(sql)語句后,cursor指向第一條記錄之前的位置。
執行cursor.fetchone()語句之后,fetchone()方法返回cursor指向的下一條記錄,同時cursor指向當前記錄的下一條記錄。
當cursor已經指向最后一條記錄時,再次執行cursor.fetchone()語句后,結果返回None,cursor不再向前移動。
2:fetchall(): 接收全部的返回結果行
import pymysql # 打開數據庫連接 db = pymysql.connect("localhost", "root", "123456", "test") # 使用cursor()方法獲取操作游標 cursor = db.cursor() # SQL 查詢語句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # 執行SQL語句 cursor.execute(sql) # 獲取所有記錄列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印結果 print("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % (fname, lname, age, sex, income)) except: print ("Error: unable to fetch data") # 關閉數據庫連接 db.close()
