最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python數(shù)據(jù)庫(kù)操作指南之PyMysql使用詳解

 更新時(shí)間:2023年03月02日 10:39:03   作者:南京叢林Jungle  
PyMySQL是在Python3.x版本中用于連接MySQL服務(wù)器的一個(gè)庫(kù),Python2 中則使用mysqldb,下面這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)庫(kù)操作指南之PyMysql使用的相關(guān)資料,需要的朋友可以參考下

PyMysql使用詳解

在編寫(xiě)小腳本時(shí),PyMysql是快速連接并操作數(shù)據(jù)庫(kù)的一個(gè)不錯(cuò)選擇。

安裝

pip3 install PyMysql
# 可使用 pip list 查看此環(huán)境安裝了哪些第三方庫(kù)    pip list | grep PyMysql

使用

import pymysql

連接數(shù)據(jù)庫(kù)

使用connect函數(shù)創(chuàng)建連接對(duì)象,此連接對(duì)象提供關(guān)閉數(shù)據(jù)庫(kù)、事務(wù)回滾等操作

一般傳參為:host, user, password, port(默認(rèn)為3306), database(想要連接的數(shù)據(jù)庫(kù)名)

db = pymysql.connect(host='127.0.0.1',
                     user='root',
                     password='pwd',
                     database='database_name')

連接對(duì)象的常見(jiàn)方法

方法名說(shuō)明
cursor()獲取游標(biāo)對(duì)象,操作數(shù)據(jù)庫(kù),如執(zhí)行DML操作,調(diào)用存儲(chǔ)過(guò)程等
commit()提交事務(wù)
rollback()回滾事務(wù)
close()關(guān)閉數(shù)據(jù)庫(kù)連接

操作數(shù)據(jù)庫(kù)

操作數(shù)據(jù)庫(kù)主要使用cursor游標(biāo)對(duì)象,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作

cursor游標(biāo)對(duì)象的常見(jiàn)方法

方法名說(shuō)明
close()關(guān)閉當(dāng)前游標(biāo)對(duì)象
execute(query)執(zhí)行數(shù)據(jù)庫(kù)操作,如sql語(yǔ)句或數(shù)據(jù)庫(kù)命令
executemany(query,params)用于批量操作,如:批量更新
fetchone()獲取查詢(xún)結(jié)果集中的下一條記錄
fetchmany(size)獲取查詢(xún)結(jié)果集中指定數(shù)量的記錄,size默認(rèn)為1
fetchall()獲取查詢(xún)結(jié)果集中所有記錄
nextset()跳至下一個(gè)可用的結(jié)果集

fetchone(),fetchmany(size),fetchall() 三者的返回值都是元組 或 元組的嵌套 查

查詢(xún)主要獲取結(jié)果集,注意fetchone 得到的是元組, fetchmany(size),fetchall()得到的是元組的嵌套

注意:

如果既要使用python的字符串解析%,sql語(yǔ)句中又包含sql的模糊查詢(xún)占位符%, 模糊查詢(xún)使用%%即可,這樣不會(huì)報(bào)錯(cuò)

import pymysql

# 創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
db = pymysql.connect(host='127.0.0.1',
                     user='root',
                     password='pwd',
                     database='database_name')
# 創(chuàng)建游標(biāo)對(duì)象
cursor = db.cursor()

table_name = 'map_point'
sql = "SELECT * FROM %s WHERE username LIKE 'DL%%' " % table_name
try:
    cursor.execute(sql)  # 執(zhí)行sql語(yǔ)句,也可執(zhí)行數(shù)據(jù)庫(kù)命令,如:show tables
    result = cursor.fetchall()  # 所有結(jié)果
    print(result)
except Exception as e:
    db.rollback()
    print("查詢(xún)失敗")
    print(e)
finally:
    cursor.close()  # 關(guān)閉當(dāng)前游標(biāo)
    db.close()  # 關(guān)閉數(shù)據(jù)庫(kù)連接

循環(huán)查詢(xún):

在一些場(chǎng)景中,需要進(jìn)行循環(huán)查詢(xún),判斷,此時(shí)在執(zhí)行完execute查詢(xún)語(yǔ)句后,務(wù)必進(jìn)行commit提交,否則每次查詢(xún)到的數(shù)據(jù)都是之前查詢(xún)結(jié)果的快照,也就是舊數(shù)據(jù)。

或者采用第二種方案,創(chuàng)建connect連接時(shí),增添autocommit=True屬性,自動(dòng)進(jìn)行commit提交。

增,刪,改

增刪改需要有提交事務(wù)的操作,查不需要提交事務(wù),但如果循環(huán)查詢(xún),務(wù)必提交事務(wù),否則結(jié)果都是重復(fù)的

創(chuàng)建連接對(duì)象——db= pymysql()

創(chuàng)建cursor游標(biāo)對(duì)象——cur = db.cursor()

數(shù)據(jù)操作——cur.execute(sql)

提交連接事務(wù)——db.commit()

關(guān)閉cursor游標(biāo)對(duì)象——cur.close()

關(guān)閉連接對(duì)象——db.close( )

import pymysql

# 創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
db = pymysql.connect(host='127.0.0.1',
                     user='root',
                     password='pwd',
                     database='database_name')
# 創(chuàng)建游標(biāo)對(duì)象
cursor = db.cursor()

table_name = 'table_name '
user_id = 'yyy'
user_no = 'xxx'
sql = "UPDATE %s SET user_no = '%s' WHERE user_id = '%s'" % (table_name, user_no, user_id)
try:
    cursor.execute(sql)  # 執(zhí)行sql語(yǔ)句,也可執(zhí)行數(shù)據(jù)庫(kù)命令,如:show tables
    db.commit()  # 增刪改,必須執(zhí)行事務(wù)
    print("數(shù)據(jù)更新成功")
except Exception as e:
    db.rollback()  # 若出現(xiàn)失敗,進(jìn)行回滾
    print("數(shù)據(jù)更新失敗")
    print(e)
finally:
    cursor.close()  # 關(guān)閉當(dāng)前游標(biāo)
    db.close()  # 關(guān)閉數(shù)據(jù)庫(kù)連接

使用循環(huán)批量更新

db = pymysql.connect(host='127.0.0.1',
                     user='root',
                     password='pwd',
                     database='database_name')

table_name = 'table_name'
update_list = ['xxx2', 'xxxx3']
condition_list = ['xxx', 'xxx1']
# 條件集合,更新集合長(zhǎng)度相等時(shí)可使用,可根據(jù)其他情況重新編寫(xiě)
cursor = db.cursor()
for i in range(len(condition_list)):
    sql = "UPDATE %s SET user_no = '%s' WHERE user_id = '%s'" % (table_name, update_list[i], 
                                                                                condition_list[i])
    print('執(zhí)行sql語(yǔ)句:' + sql)
    try:
        cursor.execute(sql)
        db.commit()
        print("數(shù)據(jù)更新成功" + str(i+1) + '條')
    except Exception as e:
        db.rollback()
        print("數(shù)據(jù)更新失敗")
        print(e)
cursor.close()
db.close()

使用executemany(query, param) 批量更新

params為每條記錄的維度,可為嵌套數(shù)組和元組

注意:sql語(yǔ)句中需要更改的數(shù)據(jù)不管什么類(lèi)型,統(tǒng)一使用%s作為占位符,不需要加引號(hào)

# 創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
db = pymysql.connect(host='127.0.0.1',
                     user='root',
                     password='pwd',
                     database='database_name')
# 創(chuàng)建游標(biāo)對(duì)象
cursor = db.cursor()
update_list = ['a', 'b']
condition_list = ['a1', 'b1']
# 條件數(shù)組和需要更新的數(shù)據(jù)數(shù)組是分開(kāi)的,因?yàn)閜aram需要以每條的維度,所以可以使用拉鏈函數(shù)合并
params = zip(update_list, condition_list) # 或 param = [['a', 'a1'], ['b', 'b1']]
sql = "UPDATE map_point SET storageLocation_no = %s WHERE position_id = %s"  # 注意 這里的 占位%s 都不用加引號(hào)
try:
    cursor.executemany(sql, params)  # 執(zhí)行sql語(yǔ)句
    db.commit()  # 執(zhí)行事務(wù)
    print("數(shù)據(jù)批量更新成功")
except Exception as e:
    db.rollback()
    print("數(shù)據(jù)更新失敗")
    print(e)
finally:
    cursor.close()  # 關(guān)閉當(dāng)前游標(biāo)
    db.close()  # 關(guān)閉數(shù)據(jù)庫(kù)連接

總結(jié)

到此這篇關(guān)于python數(shù)據(jù)庫(kù)操作指南之PyMysql使用詳解的文章就介紹到這了,更多相關(guān)python數(shù)據(jù)庫(kù)操作PyMysql使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python下grpc與protobuf的編寫(xiě)使用示例

    python下grpc與protobuf的編寫(xiě)使用示例

    這篇文章主要為大家介紹了python下grpc與protobuf的編寫(xiě)使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Python制作一個(gè)WiFi密碼測(cè)試工具

    Python制作一個(gè)WiFi密碼測(cè)試工具

    這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)字典攻擊方式幫助用戶(hù)測(cè)試 Wi-Fi 網(wǎng)絡(luò)的安全性,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2025-01-01
  • pycharm通過(guò)ssh連接遠(yuǎn)程服務(wù)器教程

    pycharm通過(guò)ssh連接遠(yuǎn)程服務(wù)器教程

    今天小編就為大家分享一篇pycharm通過(guò)ssh連接遠(yuǎn)程服務(wù)器教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python中存取文件的4種不同操作

    Python中存取文件的4種不同操作

    這篇文章主要給大家介紹了關(guān)于Python中存取文件的4種不同操作的相關(guān)資料,分別包括Python內(nèi)置方法、numpy模塊方法、os模塊方法以及csv模塊方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • python3 實(shí)現(xiàn)調(diào)用串口功能

    python3 實(shí)現(xiàn)調(diào)用串口功能

    今天小編就為大家分享一篇python3 實(shí)現(xiàn)調(diào)用串口功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • pygame 鍵盤(pán)事件的實(shí)踐

    pygame 鍵盤(pán)事件的實(shí)踐

    本文主要介紹了pygame 鍵盤(pán)事件,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python中scatter函數(shù)參數(shù)及用法詳解

    Python中scatter函數(shù)參數(shù)及用法詳解

    這篇文章主要介紹了Python中scatter函數(shù)參數(shù)及用法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • python使用IP歸屬地查詢(xún)API追蹤網(wǎng)絡(luò)活動(dòng)

    python使用IP歸屬地查詢(xún)API追蹤網(wǎng)絡(luò)活動(dòng)

    這篇文章主要為大家介紹了python使用IP歸屬地查詢(xún)API追蹤網(wǎng)絡(luò)活動(dòng)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Python如何使用Gitlab API實(shí)現(xiàn)批量的合并分支

    Python如何使用Gitlab API實(shí)現(xiàn)批量的合并分支

    這篇文章主要介紹了Python如何使用Gitlab API實(shí)現(xiàn)批量的合并分支,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python實(shí)現(xiàn)在線(xiàn)音樂(lè)播放器

    Python實(shí)現(xiàn)在線(xiàn)音樂(lè)播放器

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)在線(xiàn)音樂(lè)播放器的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評(píng)論

齐河县| 东方市| 德昌县| 偃师市| 青海省| 驻马店市| 大渡口区| 息烽县| 梁山县| 廉江市| 灵璧县| 翼城县| 旬阳县| 南岸区| 济宁市| 宁明县| 南城县| 成安县| 五指山市| 万年县| 车致| 澄迈县| 晋州市| 汝阳县| 平谷区| 灌阳县| 沾化县| 林甸县| 车险| 渝中区| 和林格尔县| 廊坊市| 深州市| 漯河市| 邯郸县| 高淳县| 阳朔县| 五常市| 无棣县| 南川市| 子长县|