日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Python批量造数并利用pymysql写入到数据库之multiprocessing多进程、threading多线程实现方式(学习笔记)

發布時間:2024/3/26 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python批量造数并利用pymysql写入到数据库之multiprocessing多进程、threading多线程实现方式(学习笔记) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.導包

import random import string import pymysql import time import multiprocessing # multiprocessing包是Python中的多進程管理包,支持子進程、通信和共享數據、執行不同形式的同步,提供了Process、Queue、Pipe、Lock等組件 import threading # threading模塊中包含了關于線程操作的豐富功能,包括:常用線程函數,線程對象,鎖對象,遞歸鎖對象,事件對象,條件變量對象,信號量對象,定時器對象,柵欄對象。

2.造數--生成要寫入數據庫的數據

# 數據生成部分------------公共------------------------------------------------------------------------------------------------------------------------------(始) class CreateData(object):# 獲取姓名def get_name(self):# 打開文件‘金庸小說人物14部1420人.txt’、‘古龍小說人物男.txt’、‘金庸小說人物女.txt’讀取為UTF-8格式;(注:本地txt文件內的人物名之間必須以英文逗號,隔開,不換行,無其它符號)fp = open("D:\my_python\Scripts\ProjectFile\其他\金庸小說人物14部1420人.txt", "r", encoding="UTF-8")names_1 = fp.read().split(',') # 讀取文件全部內容,并切割成列表return random.choice(names_1) # 從姓名列表names_1中隨機選取一個元素(姓名)并返回fp.close()# 獲取性別def get_sex(self):return random.choice(["男","女"]) # random.randint()的參數應該是一個整數,而不是一個列表,可以將代碼修改為:random.choice()# 獲取年齡def get_age(self):return random.randint(18,75)# 獲取電話def get_tel(self):get_tel = '131'for i in range(8):get_tel += str(random.randint(0, 9))return get_tel# 獲取郵件def get_emailn(self):str_char = ""get_char = string.ascii_letters + string.digits # +string.punctuation # 隨機選值的容器:數字、大小寫、符號get_len = random.randint(4, 6) # 定義隨機的4~6位數字for i in range(1, get_len + 1):str_char += random.choice(get_char)return str_chardef get_email(self):return self.get_emailn() + random.choice(["@163.com", "@126.com", "@gmail.com","@outlook.com","@my.com"]) # 此處調用get_email1方法# 聲明一個方法,可以使一條數據放在一個列表def get_one_data(self):# 此處返回的數據順序最好與創建表時的結構順序一致,以便插入數據時一一對應return [self.get_name(),self.get_sex(),self.get_age(),self.get_tel(),self.get_email()] # # 測試代碼 # if __name__ == "__main__": # data = CreateData() # 實例化類方法 # print("姓名:",data.get_name()) # print("性別:",data.get_sex()) # print("年齡:",data.get_age()) # print("電話:",data.get_tel()) # print("郵件:",data.get_email()) # # 數據生成部分------------公共------------------------------------------------------------------------------------------------------------------------------(止)

2.1.生成姓名需要的txt文件(復制內容到新建文件保存為txt文本),復制文件所在路徑到代碼中,要絕對路徑,否則可能無法讀取

馬行空,馬春花,徐錚,商寶震,何思豪,閻基,田歸農,苗人鳳,南仁通,補鍋匠,腳夫,車夫,蔣調侯,店伴,鐘兆文,鐘兆英,鐘兆能,南蘭,苗若蘭,商老太,平四,胡斐,張總管,上官鐵生,王劍杰,陳禹,古若般,殷仲翔,福康安,趙半山,孫剛峰,歐陽公政,鐘四嫂,鐘小二,鐘阿四,胖商人,瘦商人,鳳南天,鳳七,哈赤大師,蛇皮張,鄺寶官,鳳一鳴,大漢,孫伏虎,尉遲連,楊賓,中年武師,袁紫衣,劉鶴真,崔百勝,曹猛,藍秦,易吉,王仲萍,同桌后生,張飛雄,程靈素,姜鐵山,薛鵲,王鐵匠,姜小鐵,田青文,慕容景岳,張管家,聶鉞,上官,褚轟,汪鐵鶚,周鐵鶴,曾鐵鷗,秦耐之,姬曉峰,張九,任通武,蔡威,湯沛,無青子,海蘭弼,相國夫人,黃希節,文醉翁,周隆,郭玉堂,齊伯濤,石萬嗔,陳家洛,大智禪師,陳高波,安提督宗雄,桑飛虹,倪不大,倪不小,常赫志,常伯志,心硯,石雙英,劉之余,童懷道,李廷豹,木文察,司徒雷,無塵道長,德布,李沅芷,余魚同,謝不當,呂小妹,俞朝奉,王劍英,西靈道人,于管家,田青文,左書僮,右書僮,平阿四,阮士忠,劉元鶴,杜希孟,周云陽,鄭三娘,寶樹,苗若蘭,苗人鳳,范幫主,殷吉,胡一刀,胡夫人,胡斐,陶子安,陶百歲,曹云奇,琴兒,熊元獻,靜智大師,賽總管,卜垣,丁典,萬震山,馬大鳴,萬圭,水福,水岱,血刀老祖,孫均,馮坦,平工頭,劉乘風,水笙,言達平,汪嘯風,張姓老者,吳坎,沈城,花鐵干,陸天抒,狄云,周圻,空心菜,寶象和尚,桃紅,耿天霜,高管家,鐵匠,戚芳,凌退思,凌霜華,魚販頭子,菊友,梅念笙,戚長發,魯坤,教書先生,刀白鳳,丁春秋,馬夫人,馬五德,小翠,于光豪,巴天石,不平道人,鄧百川,風波惡,甘寶寶,公冶乾,木婉清,包不同,天狼子,太皇太后,王語嫣,烏老大,無崖子,云島主,云中鶴,止清,白世鏡,天山童姥,本參,本觀,本相,本因,出塵子,馮阿三,古篤誠,少林老僧,過彥之,蘭劍,平婆婆,石清露,石嫂,司空玄,司馬林,玄慈,玄寂,玄苦,玄難,玄生,玄痛,葉二娘,左子穆,耶律莫哥,李春來,李傀儡,李秋水,劉竹莊,祁六三,喬峰,全冠清,樸者和尚,阮星竹,許卓誠,朱丹臣,竹劍,阿碧,阿洪,阿勝,西夏宮女,阿朱,阿紫,波羅星,陳孤雁,何望海,鳩摩智,來福兒,耶律洪基,努兒海,宋長老,蘇星河,蘇轍,完顏阿古打,吳長風,枯榮長老,辛雙清,嚴媽媽,余婆婆,岳老三,張全祥,單伯山,單季山,單叔山,單小山,單正,段延慶,段譽,段正淳,段正明,范禹,宗贊王子,范驊,茍讀,和里布,孟師叔,華赫艮,耶律涅魯古,耶律重元,郁光標,卓不凡,范百齡,哈大霸,姜師叔,吳光勝,夢姑,神山上人,神音,獅鼻子,室里,項長老,姚伯當,幽草,趙錢孫,黃眉和尚,哲羅星,鐘靈,鐘萬仇,高升泰,龔光杰,賈老者,康廣陵,秦紅棉,容子矩,桑土公,唐光雄,奚長老,徐長老,諸保昆,崔百泉,崔綠華,符敏儀,趙洵,菊劍,梅劍,蕭遠山,虛竹,游驥,聾啞婆婆,游駒,游坦之,程青霜,傅思歸,葛光佩,緣根,鮑千靈,智光大師,褚萬里,瑞婆婆,端木元,黎夫人,慕容博,慕容復,譚公,赫連鐵樹,譚婆,譚青,摘星子,慧方,慧觀,慧凈,慧真,穆貴妃,薛慕華,吳領軍,易大彪,馬青雄,馬鈺,小沙彌,木華黎,丘處機,沈青剛,書記,一燈大師,書生,王處一,王罕,尹志平,包惜弱,馮衡,術赤,天竺僧人,孫不二,札木合,華箏,李萍,劉玄處,劉瑛姑,呂文德,完顏洪烈,喬寨主,曲三,曲傻姑,全金發,湯祖德,朱聰,陳玄風,完顏洪熙,陸乘風,陸冠英,沙通天,農夫,吳青烈,赤老溫,楊康,靈智上人,楊鐵心,余兆興,張阿生,張十五,忽都虎,歐陽峰,歐陽克,拖雷,者勒米,周伯通,段天德,郭靖,郭嘯天,郝大通,洪七公,侯通海,姜文,柯鎮惡,枯木,南希仁,胖婦人,胖丐,胖子,啞梢公,都史,錢青健,桑昆,鐵木真,蓋運聰,黃蓉,黃藥師,梁長老,梁子翁,梅超風,漁人,博爾忽,博爾術,程瑤迦,韓寶駒,韓小瑩,魯有腳,穆念慈,彭長老,彭連虎,童子,窩闊臺,簡長老,焦木和尚,簡管家,裘千仞,裘千丈,瘦丐,察合臺,譚處端,黎生,樵子,酸儒文人,李三,霍元龍,史仲俊,陳達海,上官虹,李文秀,丁同,馬家駿,蘇普,蘇魯克,車爾庫,阿曼,桑斯,云強盜,全強盜,寧強盜,瓦爾拉齊,九難,衛周祚,馬喇,馬佑,馬寶,馬博仁,于八,馬超興,小桂子,小玄子(玄燁),馬齊,心溪,韋小寶,韋春花,毛文珠,巴泰,方怡,風際中,鄧炳春,云素梅,王潭,方大洪?無根道人,五符,元義方,巴郎星,王武通,王進寶,王琪,雙兒,史松,馮難敵,鄺天雄,平威,白寒松,白寒楓,盧一峰,歸辛樹,玄真道人,司徒鶴,對喀納,馮錫范,孫思克,歸鐘,歸二娘,玉林,司徒伯雷,湯若望,李自成,老吳,守備,米思翰,江百勝,齊元凱,華伯斯基,西奧圖三世,劉一舟,沐劍聲,莊夫人,許雪亭,多隆,齊洛諾夫,祁清彪,關安基,呂留良,陳珂,李西華,呂葆中,呂毅中,行顛,莊廷龍,莊允城,陸高軒,杜立德,吳之榮,蘇菲亞,陳圓圓,罕貼摩,吳大鵬,沐劍屏,吳三桂,阿濟赤,阿爾尼,張淡月,蘇荃,蘇岡,吳六奇,李式開,李力世,陳近南,吳應熊,楊溢之,佟國綱,吳立身,張康年,張勇,張媽,吳寶宇,何惕守,勞太監,明珠,費要多羅,柳燕,圖海道,杰書,郎師傅,凈清,凈濟,林興珠,圖爾布青,林永超,柳大洪,呼巴音,昌齊,鄭克爽,趙齊賢,茅十八,建寧公主,洪朝,姚春,施瑯,皇甫閣,胡逸之,南懷仁,鐘志靈,神照上人,洪安通,胡德第,姚必達,趙良棟,查繼左,胖頭陀,郝太監,徐天川,陶紅英,索額圖,教士,陶師傅,高里津,敖彪,高顏超,錢老本,海大富,殷錦,賈老六,筆貼式,顧炎武,夏國相,桑結,晦聰禪師,章老三,黃甫,黃金魁,崔瞎子,黃宗羲,菊芳,彭參將,葛爾丹,程維藩,溫有方,溫有道,舒化龍,曾柔,富春,葛通,路副將,雷一嘯,瘦頭陀,蕊初,瑞棟,蔡德忠,察爾珠,潘先生,澄光,澄通,澄觀,澄心,澄識,樊綱,慕天顏,鰲拜,巴顏法師,行癡,卜沉,丁堅,丁勉,上官云,萬大平,于人豪,于嫂,不戒和尚,長青子,仇松年,丹青生,鄧八公,方人智,方生,方證,天門道人,計無施,木高峰,風清揚,叢不棄,王伯奮,王誠,王二叔,天乙道人,王夫人,王家駒,王家駿,王元霸,王仲強,白二,白熊,天松道人,樂厚,令狐沖,寧中則,平夫人,平一指,申人俊,史鏢頭,東方不敗,史登達,司馬大,田伯光,儀和,儀琳,儀清,玉璣子,玉靈道人,玉磬子,玉音子,玉鐘子,左冷禪,成不憂,齊堂主,吉人通,沖虛道長,老不死,老頭子,劉菁,劉芹,劉正風,米為義,農婦,成高道人,曲非煙,曲洋,任我行,英顎,西寶,向大年,向問天,陳七,陳歪嘴,遲百誠,狄鏢頭,狄修,杜長老,何三七,季鏢頭,定靜師太,勞德諾,陸伯,陸大有,任盈盈,沙天江,禿筆翁,吳柏英,吳天德,辛國梁,嚴三星,楊蓮亭,余滄海,余人彥,岳靈珊,張夫人,張金鏊,定逸,建除,林平之,林遠圖,林震南,羅人杰,易國梓,易師爺,易堂主,英白羅,英長老,岳不群,鄭鏢頭,鄭萼,周孤桐,費彬,封不平,洪人雄,侯人英,覺月,施戴子,施令威,聞先生,啞婆婆,鐘鎮,祝鏢頭,祖千秋,高克新,高明根,賈布,賈人達,夏老拳師,秦娟,秦偉幫,桑三娘,桃干仙,桃根仙,桃花仙,桃實仙,桃葉仙,桃枝仙,陶鈞,莫大,崔鏢頭,黃伯流,黃國柏,黃鐘公,假東方不敗,梁發,綠竹翁,游迅,葛長老,震山子,黑白子,黑熊,麻衣漢子,魯連榮,舒奇,童百熊,鮑大楚,解風,藍鳳凰,譚迪人,清虛道人,大癡,衛春華,馬善均,于萬亭,大癲,馬敬俠,大苦,上官毅山,萬慶瀾,馬大挺,馬真?,文泰來,心硯,天鏡,木卓倫,無塵道人,元傷,元痛,元悲,方有德,王維揚,王道,貝人龍,尹章垓,馮輝,石雙英,玉如意,平旺先,孫大善,龍駿,白振,天虹禪師,孫老三,孫克通,安健剛,成璜,兆惠,關明梅,李可秀,朱祖蔭,李沅芷,吳國棟,遲玄,沈德潛,楊成協,余魚同,陳家洛,張安官,瑪米爾,陸菲青,孟健雄,陳正德,宋善朋,張召重,納斯爾丁?阿凡提,言伯乾,汪浩天,阿里,宋天保,和珅,武銘,凱別興,阿凡提妻,鄭板橋,哈合臺,周阿三,袁枚,范中恩,章進,周綺,忽倫大虎,和爾大,羅信,周仲英,晴畫,呼音克,周英杰,趙半山,忽倫二虎,皇太后,駱冰,胡老爺,唐六爺,閻世章,閻世魁,徐天宏,忽倫三虎,顧金標,桑拉巴,袁士霄,教長,錢正倫,梅良鳴,曹司朋,忽倫四虎,曹能,常伯志,常赫志,韓文沖,韓春霖,蔣天壽,瑞芳,周大奶奶,焦文期,蔣四根,蔣士銓,褚圓,曾圖南,喀絲麗,童兆和,乾隆皇帝,覃天丞,彭三春,騰一雷,瑞大林,福康安,霍青桐,德鄂,霍阿伊,戴永明,子聰,丁大全,人廚子,九死生,馬鈺,小棒頭,大頭鬼,一燈大師,馬光佐,小龍女,尹志平,丘處機,王處一,王十三,公孫止,小王將軍,王志坦,王惟忠,無常鬼,尹克西,天竺僧,少婦,孫婆婆,公孫綠萼,孫不二,皮清云,申志凡,馮默風,討債鬼,史伯威,史仲猛,史叔剛,史季強,史孟龍,尼摩星,李莫愁,達爾巴,劉處玄,朱子柳,圣因師太,曲傻姑,呂文德,祁志誠,李志常,劉瑛姑,吊死鬼,百草仙,陸鼎立,陸二娘,阿根,張志光,完顏萍,陸冠英,宋德方,陳大方,覺遠大師,沙通天,張君寶,張一氓,陳老丐,張二叔,陸無雙,楊過,靈智上人,武三通,武敦儒,武修文,武三娘,林朝英,耶律晉,耶律燕,耶律楚材,忽必烈,喪門鬼,狗頭陀,青靈子,歐陽峰,耶律齊,周伯通,金輪法王,洪凌波,柔兒,郭破虜,侯通海,宋五,俏鬼,柯鎮惡,點蒼漁隱,趙志敬,洪七公,郭靖,郭芙,郭襄,姬清玄,笑臉鬼,鹿清篤,崔志方,鄂爾多,薩多,黃藥師,黃蓉,程遙迦,魯有腳,彭連虎,韓無垢,童大海,韓老丐,彭長老,瘦丐,程瑛,雷猛,裘千尺,蒙哥,煞神鬼,催命鬼,藍天和,裘千仞,赫大通,瀟湘子,霍都,樊一翁,藏邊大丑,藏邊二丑,藏邊三丑,藏邊四丑,藏邊五丑,丁不三,丁不四,丁珰,龍島主,貝海石,木島主,王掌柜,元澄道人,王萬仞,王老六,尤得勝,天虛,風良,白阿繡,白自在,大悲老人,馮振武,孫萬年,司徒橫,漢子,石清,白萬劍,石中玉,丑臉漢子,史小翠,石破天,李四,李大元,安奉日,米橫野,李萬山,老李,沖虛,呂正平,齊自勉,成自學,張三,吳道通,花萬紫,西門觀止,邱山風,陳沖之,汪萬翼,楊光,閔柔,周牧,侍劍,呼延萬善,范一飛,鄭光芝,封萬里,柯萬鈞,聞萬夫,胡大哥,耿萬鐘,展飛,梁自進,梅文馨,梅芳姑,溫仁厚,謝煙客,褚萬春,廖自礪?高三娘子,照虛,解文豹,黃面道人,卜泰,丁敏尹,馬法通,衛天望,衛四娘,小翠,小虹,烏旺阿普,小鳳,小昭,衛璧,王難姑,元廣波,鄧愈,方天勞,天鳴方丈,韋一笑,云鶴,無色,王八衰,方東白,五姑,貝錦儀,無相禪師,小玲?,王保保,太虛子,史鏢頭,史火龍,史紅石,平等寶樹王,葉長青,孫三毀,白龜壽,陳友諒,冷謙,湯和,朱元璋,傳功長老,祁天彪,紀曉芙,朱長齡,西華子,劉敖,陽頂天,齊心寶樹王,李四摧,過三拳,李天恒,剛相,朱九真,喬福,蘇夢清,司徒千鐘,季長老,花云,吳良,吳禎,張無忌,麥鯨,何足道,執法長老,杜百當,楊逍,辛然,妙風使,邵鶴,邵燕,吳勁草,壽南山,吳六破,張中,何太沖,孟正鴻,靈虛,宋青書,張三豐,阿二,阿三,楊不悔,楊姐姐,宋遠橋,張松溪,張翠山,蘇習之,麥少幫主,周芷若,鄭長老,宗維俠,范遙,撥速臺,周顛,空聞,空智,空性,空見,空性,周五輸,鄭七滅,明月,武青嬰,金花婆婆,武烈,易三娘,說不得,胡青牛,泉建男,郝密,聞蒼松,哈總管,覺遠,趙敏,趙一傷,封壇主,賀老三,郭襄,宮九佳?歐陽牧之,姚清泉,胡青羊,俞連舟,俞岱巖,都大錦,徐達,唐洋,高老者,圓真(成昆),唐文亮,高則成,流云使,俱明寶樹王,夏胄,圓業,圓心,錢二敗,殷野王,殷天正,殷無祿,殷無福,殷無壽,殷離,班淑嫻,殷素素,殷梨亭,莫聲谷,常敬之,常遇春,常勝寶樹王,渡劫,渡難,渡厄,常金鵬,清風,鹿杖客,韓林兒,掌棒龍頭,彭瑩玉,謝遜,蔣濤,輝月使,程壇主,韓千葉,矮老者?掌缽龍頭,簡捷,詹春,靜空,靜照,靜迦,靜慧,莊錚,秦老五,察罕特穆爾,鮮于通,德成,潘天耕,顏恒,鶴筆翁?薛公遠,圓音,靜虛師太,靜玄師太,摩訶巴思,滅絕師太,丁游,小菊,萬里風,水鑒,義生,馬公子,玉真子,水云道人,王師兄,歸辛樹,歸二娘,孫仲壽,田見秀,龍德鄰,孫仲尹,木桑道長,馮同知,寧完我,石駿,史秉文,史秉光,馮難敵,馮不摧,馮不破,白臉人,安大娘,劉芳亮,呂七,楊景亭,劉培生,安劍清,多爾袞,劉宗敏,紅娘子,朱安國,老王,安小慧,齊云,張朝唐,張信,張康,楊鵬舉,張春九,沙老大,閔子華,吳平,沙廣天,孟伯飛,張若谷,孟鑄,孟錚,李巖,單鐵生,陳圓圓,宋獻策,應松,岑其斯,何紅藥,李自成,阿九,何鐵手,鄭起云,范文程,羅大千,羅立如,彼得,若克琳,榮彩,洞玄,侯飛文,皇太極,祖大壽,倪浩,啞巴,胡桂南,胡老三,洪勝海,秦棟,錢通四,高師弟,袁承志,夏雪宜,崔秋山,黃真,崔希敏,曹化淳,黃須人,黃二毛子,梅劍和,溫正,溫南揚,焦公禮,程青竹,褚紅柏,董開山,溫方施,溫方山,溫方悟,溫方達,溫方義,焦宛兒,溫青,溫儀,鮑承先,譚文理,黎剛,潘秀達,穆人清,書僮,任飛燕,劉于義,楊夫人,花劍影,林玉龍,周威信,卓天雄,逍遙子,袁夫人,袁冠南,常長風,蓋一鳴,蕭半和,蕭中慧(楊中慧)

3.循環寫入數據到數據庫(可以理解為單線程--python的GIL鎖機制決定,但可以使用multiprocessing、threading模塊實現多進程、多線程)

# 一、一百萬條數據在數據庫中的插入處理 class ConnMysql(object):# 獲取數據庫連接def __init__(self):self.get_conn = pymysql.connect(host="192.168.xxx.xx",user="root",password="password密碼",port=3306,database="databasename庫名")# 創建游標self.get_cursor = self.get_conn.cursor()# 定義SQL語句并通過游標執行def create_table(self,tablename): # 創建表# 定義創建表的SQL語句,此處可以將字段全部置為不定長參數str_sql = "create table %s(name varchar(20),sex char(4),age int,tel varchar(11),email varchar(20));" % tablename# 通過游標執行SQL語句self.get_cursor.execute(str_sql)# 定義插入數據的方法def insert_data(self,tablename,*args): # tablename為表名;args為構建器的一組參數,*args為構建器的所有參數str_sql = "insert into {0} values(%s,%s,%s,%s,%s);".format(tablename)self.get_cursor.executemany(str_sql,args) # executemany方法是一種可以批量執行SQL語句的方法。它可以接受一個參數列表,execute執行/?eks?kju?t/self.get_conn.commit()# 定義一個關閉對象的方法def close_conn(self):self.get_conn.close() # 測試代碼,測試代碼定義在main方法中 if __name__ == "__main__":conn = ConnMysql() # 實例化類方法createdata = CreateData() # 實例化 # 造數conn.create_table("table1") # 創建名為table1的表list1 = []for i in range(1,10001): # 執行10000次get_one = createdata.get_one_data() # 調用CreateData類的get_one_data方法list1.append(get_one) # 在list1列表中插入get_one列表(一行數據)conn.insert_data("table1",*list1) # 將list1表插入table1表中conn.close_conn() # 關閉數據庫連接

4.多進程--使用 Python中的multiprocessing多進程管理包將數據寫入數據庫

# 二、使用多進程實現將一百萬條數據插入MySQL數據庫的操作 # import multiprocessing # 定義插入數據的方法 def insert_data(tablename,*args):get_conn = pymysql.connect(host="192.168.xxx.xx",user="root",password="password密碼",port=3306,database="databasename庫名") # 連接數據庫get_cursor = get_conn.cursor() # 獲取游標str_sql = "insert into {0} values(%s,%s,%s,%s,%s);".format(tablename) # 定義SQL語句get_cursor.executemany(str_sql,args) # 批量執行SQL語句get_conn.commit() # 提交保存數據# 定義一個關閉對象的方法get_conn.close() # 測試代碼 if __name__ == "__main__":createdata = CreateData() # 實例化CreateData類方法list1 = []for i in range(1,1000001): # 循環1000000次,生成1000000條數據get_one = createdata.get_one_data() # 調用CreateData類的get_one_data方法list1.append(get_one) # 在list1列表中插入get_one列表(一行數據)start_time = time.time()print("執行程序開始時間:",start_time)p1 = multiprocessing.Process(target=insert_data,args=("table1",*list1[:310000]))p2 = multiprocessing.Process(target=insert_data,args=("table1",*list1[310001:700000]))p3 = multiprocessing.Process(target=insert_data,args=("table1",*list1[700001:]))p1.start()p2.start()p3.start()p1.join()p2.join()p3.join()end_time = time.time()print("執行程序結束時間:", end_time)print("執行程序總耗費時間:",end_time - start_time)

5.多線程--使用 Python中的threading多線程管理模塊將數據寫入數據庫

# 三、使用多線程實現將一百萬條數據插入MySQL數據庫 # import threading def insert_data(tablename,*args):get_conn = pymysql.connect(host="192.168.xxx.xx",user="root",password="password密碼",port=3306,database="databasename庫名") # 連接數據庫get_cursor = get_conn.cursor() # 獲取游標str_sql = "insert into {0} values(%s,%s,%s,%s,%s);".format(tablename) # 定義SQL語句get_cursor.executemany(str_sql, args) # 批量執行SQL語句get_conn.commit() # 提交保存數據# 定義一個關閉對象的方法get_conn.close() # 測試代碼 if __name__ == "__main__":createdata = CreateData()list1 = []for i in range(1,1000001):get_one = createdata.get_one_data()list1.append(get_one) # 在list1列表中插入get_one列表(一行數據)start_time = time.time()print("執行程序開始時間:",start_time)t1 = threading.Thread(target=insert_data,args=("table1",*list1[:310000]))t2 = threading.Thread(target=insert_data, args=("table1", *list1[310001:700000]))t3 = threading.Thread(target=insert_data, args=("table1", *list1[700000:]))t1.start()t2.start()t3.start()t1.join()t2.join()t3.join()end_time = time.time()print("程序執行結束時間:",end_time)print("執行程序總耗費時間:",end_time - start_time)

最后總結:

  • 使用Python自動化造數,借助multiprocessing、threading兩個模塊可以大大提高效率,我是用的代碼編寫工具是PyCharm,Python3.9和3.10都行,數據庫MySQL 8.0安裝在Debian 11上,Oracle 10安裝在Anolis_OS 8上(兼容CentOS 8)上,如上代碼都可以實現!

  • 數據庫安裝完成,設置root密碼后,最好先建兩個同名的超級用戶(一個本地終端登錄,一個遠程),直接授權root遠程,過一段時間就會被拒絕本地登錄,這樣改密碼還很麻煩。

  • 例,創建名為testuser 密碼為password的用戶,再使用該testuser 用戶登錄,去創建database

  • create user 'testuser'@'localhost' identified by 'password';? ? --#本地登錄權限 create user 'testuser'@'%' identified by 'password';? ? --#遠程登錄權限 flush privileges;? ? --#刷新權限 select user,host from user;? ? --#查看用戶權限后使用新用戶登錄 create database tiger_d default character set utf8 collate utf8_general_ci;? ? --#創建名稱為“tiger_d”的數據庫,并設定編碼集為utf8

    最后聲明:

    我也是東拼西湊學習而來,請勿打賞、點贊、直接復制代碼,只是我學習的過程可謂坎坷,在網上各種搜,沒找到一篇完整詳細的博客供初學者參考思路,希望能幫助自學自動化測試的道友可以提高學習效率,共同進步。

    總結

    以上是生活随笔為你收集整理的Python批量造数并利用pymysql写入到数据库之multiprocessing多进程、threading多线程实现方式(学习笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。