使用fetchone()
方法獲取單條記錄使用fetchall()
方法從數據庫表中獲取多個值。
fetchone() - 它獲取查詢結果集的下一行。 結果集是當使用游標對象來查詢表時返回的對象。 fetchall() - 它獲取結果集中的所有行。 如果已經從結果集中提取了一些行,則從結果集中檢索剩余的行。 rowcount - 這是一個只讀屬性,並返回受execute()方法影響的行數。
import pymysql # 打開數據庫鏈接 db = pymysql.connect("localhost","root","123456","test" ) # 獲取操作游標:使用cursor()方法獲取 cursor = db.cursor()
# 按字典格式返回數據 # cursor = db.cursor(pymysql.cursors.DictCursor)
# 查詢語句 sql = "SELECT * FROM USER \ WHERE INCOME > %d" % (1000) #print (sql)
try: # 執行sql cursor.execute(sql) # 獲取所有結果列表:fetchall() results = cursor.fetchall() for row in results: #print (row) fname = row[1] lname = row[2] age = row[3] sex = row[4] income = row[5] # 打印查看一下結果 print ("name = %s %s,age = %s,sex = %s,income = %s" %(fname, lname, age, sex, income )) except: import traceback #打印出報錯具體信息 traceback.print_exc() print ("Error: unable to fetch data") # 關閉數據庫鏈接 db.close()
注意:
什么是 Traceback
Traceback 是 Python 錯誤信息的報告。在其他編程語言中有着不同的叫法包括 stack trace, stack traceback, backtrac 等名稱, 在 Python 中,術語就是 Traceback
當代碼中出現錯誤,會在輸出的時候打印 Traceback 錯誤信息
寫成一個函數:
:使用 try...except...
def connMySQL():
try:
conn = pymysql.connect("localhost","root","123456","test" )#鏈接數據庫
except Exception as e:
return e.args #如果報錯,返回錯誤信息
else:
cur=conn.cursor()#建立操作游標
sql=" SELECT * from USER where income = %s" #要執行的sql
params=(1,) #用一個參數,賦值給上面的%s
#------獲取單條數據結果fetchone()
#cur.execute(sql,params) #執行數據庫sql
#data=cur.fetchone() #這是獲取單條結果數據
#print(data)
#-------獲取多條數據結果fetchall()
cur.execute(select * from USER...)
data=cur.fetchall()
for item in data: #循環的方式去打印結果出來
print(item)
#db=[item for item in data] #或者使用列表推導式來打印結果出來
#print(db)
finally:
cur.close() #關閉游標操作
conn.close() #關閉數據庫鏈接
#調用一下函數方法,執行看下結果
print(connMySQL())