" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python解決MySQL數(shù)據(jù)處理從SQL批量刪除報(bào)錯(cuò)

 更新時(shí)間:2023年12月20日 14:09:16   作者:wx65602fa627551  
這篇文章主要為大家介紹了Python解決MySQL數(shù)據(jù)處理從SQL批量刪除報(bào)錯(cuò),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、背景

MySQL數(shù)據(jù)庫表中有一批重復(fù)的臟數(shù)據(jù),為不影響正常業(yè)務(wù),需要進(jìn)行批量刪除。數(shù)據(jù)示例如下圖所示:

二、SQL批量刪除

首先想到的是編寫SQL語句來批量刪除:刪除身份證號為51****59且ID不為5的全部數(shù)據(jù)(保留ID為5的那一條數(shù)據(jù))

DELETE 
FROM
    test_table 
WHERE
    id IN ( SELECT id FROM test_table WHERE id_card_no = "51****59" AND id != 5 );

運(yùn)行結(jié)果:

刪除失敗,SQL語句運(yùn)行時(shí)報(bào)錯(cuò)了

鑒于當(dāng)時(shí)實(shí)際情況需要盡快刪除臟數(shù)據(jù),就沒有在此做過多的考究,原因和解決詳見第四小節(jié):SQL運(yùn)行問題排查

三、Python批量刪除

數(shù)據(jù)準(zhǔn)備
將SQL查詢到的所有需要?jiǎng)h除的數(shù)據(jù)ID保存到txt文件中

SELECT id FROM test_table WHERE id_card_no = "51****59" AND id != 5;             

讀取數(shù)據(jù)ID

def del_from_mysql():
    # 【讀取數(shù)據(jù)ID】
    with open(file="新建文本文檔.txt", mode="r", encoding="utf-8") as f:
        data = f.read()
        f.close()
    ids = data.split("\n")
    print(ids)
if __name__ == "__main__":
    del_from_mysql()

運(yùn)行結(jié)果:

連接數(shù)據(jù)庫執(zhí)行SQL

這里需要先安裝b并導(dǎo)入pymysql第三方庫

pip install pymysql

導(dǎo)入

import pymysql
def del_from_mysql(dbinfo):
    # 【讀取數(shù)據(jù)ID】
    with open(file="新建文本文檔.txt", mode="r", encoding="utf-8") as f:
        data = f.read()
        f.close()
    ids = data.split("\n")
    # 【連接數(shù)據(jù)庫執(zhí)行SQL】
    conn = pymysql.connect(**dbinfo)
    cursor = conn.cursor()
    for i in ids:
        sql = f"delete from test_table where id={i}"
        cursor.execute(sql)
        conn.commit()
    conn.close()
if __name__ == "__main__":
    # 數(shù)據(jù)庫信息
    db_info = {
        'host': "192.168.1.1",
        'port': 3306,
        'user': "test",
        'passwd': "test",
        'db': "test_",
        'charset': "utf8"
    }
    del_from_mysql(db_info)

運(yùn)行結(jié)果:

可以看到這時(shí)已經(jīng)完成重復(fù)臟數(shù)據(jù)的刪除

四、SQL運(yùn)行問題排查

前面使用SQL批量刪除時(shí)遇到了報(bào)錯(cuò):You can't specify target table 'test_table' for update in FROM clause

查閱資料后發(fā)現(xiàn):在Mysql中,delete或者update的where條件中不能包含同一張表的子查詢語句,而在where條件中再加一個(gè)中間表就能解決此問題

修改后的SQL語句如下:

DELETE 
FROM
    test_table 
WHERE
    id IN ( SELECT * FROM ( SELECT id FROM test_table WHERE id_card_no = "51****59" AND id != 5 ) t1 );

以上就是MySQL數(shù)據(jù)處理:從SQL批量刪除報(bào)錯(cuò)到Python優(yōu)雅解決的詳細(xì)內(nèi)容,更多關(guān)于Python解決SQL批量刪除報(bào)錯(cuò)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django基礎(chǔ)知識與基本應(yīng)用入門教程

    Django基礎(chǔ)知識與基本應(yīng)用入門教程

    這篇文章主要介紹了Django基礎(chǔ)知識與基本應(yīng)用,結(jié)合實(shí)例形式分析了Django框架基本的項(xiàng)目創(chuàng)建、啟動(dòng)、查看版本等操作,并結(jié)合一個(gè)簡單的blog應(yīng)用示例分析了Django的基本使用方法,需要的朋友可以參考下
    2018-07-07
  • 淺析NumPy 切片和索引

    淺析NumPy 切片和索引

    這篇文章主要介紹了NumPy 切片和索引的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)NumPy的相關(guān)知識,感興趣的朋友可以了解下。
    2020-09-09
  • OpenCV實(shí)現(xiàn)對象跟蹤的方法

    OpenCV實(shí)現(xiàn)對象跟蹤的方法

    OpenCV 是一個(gè)很好的處理圖像和視頻的工具,本文主要介紹了OpenCV 進(jìn)行對象跟蹤,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Python 爬蟲之Beautiful Soup模塊使用指南

    Python 爬蟲之Beautiful Soup模塊使用指南

    這篇文章主要介紹了Python 爬蟲之Beautiful Soup模塊使用指南,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python接入MySQL實(shí)現(xiàn)增刪改查的實(shí)戰(zhàn)記錄

    Python接入MySQL實(shí)現(xiàn)增刪改查的實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于Python接入MySQL實(shí)現(xiàn)增刪改查的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python中關(guān)于property使用的小技巧

    Python中關(guān)于property使用的小技巧

    俗話說條條大路通羅馬,同樣是完成一件事,Python 其實(shí)提供了好幾個(gè)方式供你選擇。property() 是一個(gè)比較奇葩的BIF,它的作用把方法當(dāng)作屬性來訪問,從而提供更加友好訪問方式
    2021-09-09
  • Python中文檔處理神器python-docx的用法解析

    Python中文檔處理神器python-docx的用法解析

    Python中有一個(gè)python-docx的庫,它允許創(chuàng)建、修改和操作Word文檔,本文將詳細(xì)介紹python-docx庫的用法,包括如何創(chuàng)建文檔、添加文本、格式化文本等,需要的可以參考下
    2023-11-11
  • Pandas實(shí)現(xiàn)(pivot_table函數(shù))數(shù)據(jù)透視表方式

    Pandas實(shí)現(xiàn)(pivot_table函數(shù))數(shù)據(jù)透視表方式

    pandas的pivot_table()函數(shù)非常強(qiáng)大,主要用于創(chuàng)建數(shù)據(jù)透視表,重要參數(shù)包括index、values、columns和aggfunc,index用于設(shè)置行索引,類似于SQL中的group by,values用于進(jìn)行聚合計(jì)算的數(shù)據(jù)選擇,columns參數(shù)可設(shè)置列層次,非必須
    2024-09-09
  • 為什么稱python為膠水語言

    為什么稱python為膠水語言

    在本篇文章里小編給大家分享的是關(guān)于python為何稱為膠水語言的相關(guān)知識點(diǎn),需要的朋友們可以學(xué)習(xí)參考下。
    2020-06-06
  • 利用python中pymysql操作MySQL數(shù)據(jù)庫的新手指南

    利用python中pymysql操作MySQL數(shù)據(jù)庫的新手指南

    PyMySQL是在Python3.x版本中用于連接MySQL服務(wù)器的一個(gè)庫,Python2中是使用mysqldb,這篇文章主要給大家介紹了關(guān)于利用python中pymysql操作MySQL數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下
    2021-09-09

最新評論