您好,登錄后才能下訂單哦!
python中什么是pymsql模塊?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
python3操作pymsql模塊
pymysql是python中操作mysql的模塊。
1.pymysql模塊的安裝
pip3 install pymysql
也可以使用pycharm這個IDE工具來安裝pymysql這個模塊。
2.pymysql模塊的使用
1.執(zhí)行mysql語句,獲取查詢的結(jié)果
代碼如下:
#!/usr/bin/env python #_*_coding:utf-8_*_ import pymysql #創(chuàng)建連接 conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1") #創(chuàng)建游標 cursor=conn.cursor() #執(zhí)行mysql語句,并返回執(zhí)行的結(jié)果 res=cursor.execute("select name from db1") #打印執(zhí)行的結(jié)果 print(res) #把要執(zhí)行的語句提交,否則無法保存新建或者修改數(shù)據(jù) conn.commit() #關(guān)閉游標 cursor.close() #關(guān)閉連接 conn.close()
執(zhí)行結(jié)果為:
4
因為從db1.db1這張表中檢索到四條數(shù)據(jù),所以返回的值為4
需要注意的是,查詢過程中存在中文的話,連接需要添加**"charset='utf-8'"**,否則中文會顯示亂碼。
2.獲取查詢的數(shù)據(jù)
代碼如下:
#!/usr/bin/env python #_*_coding:utf-8_*_ import pymysql #創(chuàng)建連接 conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1") #創(chuàng)建游標 cursor=conn.cursor() #執(zhí)行mysql語句 cursor.execute("select name from db1") #獲取所有的執(zhí)行結(jié)果 res=cursor.fetchall() #打印獲取到的執(zhí)行結(jié)果 print(res) #提交要執(zhí)行的mysql指令 conn.commit() #關(guān)閉游標 cursor.close() #關(guān)閉連接 conn.close()
執(zhí)行結(jié)果為:
(('xiaoming',), ('xiaobing',), ('xiaoyong',), ('xiaojian',))
可以看到,返回的結(jié)果是一個元組類型的數(shù)據(jù)。
還可以在創(chuàng)建游標的時候,使用選項來指定返回的結(jié)果為哪種數(shù)據(jù)類型:
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
使用這個指令可以把返回的結(jié)果變成字典類型。
在獲取執(zhí)行的結(jié)果時,可以指定獲取的結(jié)果的條數(shù),可以使用的選項如下:
fetchone() 取得檢索結(jié)果的一條數(shù)據(jù)
fetchmany(n) 取得檢索結(jié)果的n條數(shù)據(jù)
fetchall() 取得檢索結(jié)果的所有數(shù)據(jù)
需要注意的是,與讀取文件時的指針類似.如果在同一段代碼中,先使用fetchone()獲取檢索結(jié)果的第一條數(shù)據(jù),
然后再使用fetchmany(2)的話,指針會在檢索結(jié)果的當前位置向后讀取執(zhí)行結(jié)果,而不會從頭開始重新讀取檢索的結(jié)果。
代碼如下:
#!/usr/bin/env python #_*_coding:utf-8_*_ import pymysql #創(chuàng)建連接 conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1") #創(chuàng)建游標 cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #執(zhí)行mysql語句,并返回執(zhí)行的結(jié)果 cursor.execute("select name from db1") #取執(zhí)行結(jié)果的第一條數(shù)據(jù),并打印 res1=cursor.fetchone() print("this is first result:",res1) #從剩下的執(zhí)行結(jié)果中再取兩條數(shù)據(jù),并打印 res2=cursor.fetchmany(2) print("this is second result:",res2) #再從剩下的數(shù)據(jù)中取所有的數(shù)據(jù),并打印 res3=cursor.getchall() print("this is third result:",res3) #提交要執(zhí)行的命令 conn.commit() #關(guān)閉游標 cursor.close() #關(guān)閉連接 conn.close()
執(zhí)行結(jié)果如下:
this is first result: {'name': 'xiaoming'} this is second result: [{'name': 'xiaobing'}, {'name': 'xiaoyong'}] this is third result: [{'name': 'xiaojian'}]
第一次取第一行的檢索結(jié)果,第二次取兩行的時候,第三次取剩下的所有的結(jié)果.
因為數(shù)據(jù)表中只有四條記錄,而第一次已經(jīng)取走一行了,
第二次從第一次取得的結(jié)果又向后繼續(xù)取兩個值,所以最后取所有的值時,只剩下一個,所以第三次取得一個值。
在創(chuàng)建游標的時候,指定了返回的數(shù)據(jù)類型為字典類型,所以返回的結(jié)果是字典數(shù)據(jù)類型。
在使用fetch時,按照順序進行取得數(shù)據(jù),可以使用cursor.scroll(num,mode)來移動游標位置
mode指定位置,是相對當前位置,還是絕對位置
num指定移動的位數(shù),正數(shù)向后移動,負數(shù)向前移動
例如:
cursor.scroll(1,mode="relative") #相對于當前的指針位置取一個值
cursor.scroll(2,mode="absolute") #在當前的絕對位置取一個值
"relative"與"absolute"的區(qū)別,看下面兩段代碼:
第一段代碼:
#!/usr/bin/env python #_*_coding:utf-8_*_ import pymysql conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1") cursor=conn.cursor() cursor.execute("SELECT * FROM db1") cursor.fetchone() cursor.scroll(1,mode="relative") print(cursor.fetchone()) conn.commit() cursor.close() conn.close()
執(zhí)行結(jié)果如下:
(3, 'xiaoyong', 'xiaoyong')
第二段代碼:
#!/usr/bin/env python #_*_coding:utf-8_*_ import pymysql conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1") cursor=conn.cursor() cursor.execute("SELECT * FROM db1") cursor.fetchone() cursor.scroll(1,mode="absolute") print(cursor.fetchone()) conn.commit() cursor.close() conn.close()
執(zhí)行結(jié)果如下:
(2, 'xiaobing', 'xiaobing')
3.獲取新創(chuàng)建數(shù)據(jù)的自增ID
代碼如下:
#!/usr/bin/env python # _*_coding:utf-8_*_ import pymysql conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="",db="db1") cursor=conn.cursor() cursor.execute('INSERT INTO db1(name,password) VALUES("xiaofei","xiaofei")') conn.commit() cursor.close() conn.close() res=cursor.lastrowid print(res)
執(zhí)行結(jié)果為:
5
數(shù)據(jù)表db1中本來有四條數(shù)據(jù),現(xiàn)在新增一條,其ID為自增類型,所以返回結(jié)果為5
關(guān)于python中什么是pymsql模塊問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。