python与excel互通_【python】python vs Excel ( 与mysql数据库之间的交互)
【python】python vs Excel ( 與mysql數(shù)據(jù)庫(kù)之間的交互)
通過(guò)python與mysql數(shù)據(jù)庫(kù)做交互
到目前為止大部分案例的演示數(shù)據(jù)都是基于文件進(jìn)行讀取的。那么python如何跟數(shù)據(jù)庫(kù)之間做交互才是未來(lái)我們真正需要關(guān)心的。因?yàn)槲覀兊臄?shù)據(jù)最終還是要存儲(chǔ)到數(shù)據(jù)庫(kù)中去的。
python與數(shù)據(jù)庫(kù)之間的交互有很多。可以通過(guò)第三方包及API與不同的數(shù)據(jù)庫(kù)之間做交互。我個(gè)人的環(huán)境資源有限,因此這篇稿子是主要記錄python是如何同mysql數(shù)據(jù)庫(kù)之間進(jìn)行交互的。
一,安裝并配置mysql數(shù)據(jù)庫(kù)
https://www.cnblogs.com/liupengpengg/p/7092789.html
上述是我mysql數(shù)據(jù)庫(kù)的章節(jié),感興趣的可以按照此步驟進(jìn)行安裝。這個(gè)是基于windows平臺(tái)的安裝。如果您裝的是linux的話(huà),可以yum install mysql 或者通過(guò)官網(wǎng)下載更新版本的mysql到本地安裝。
友情提示:mysql數(shù)據(jù)庫(kù)安裝過(guò)后,windows的話(huà)要自行創(chuàng)建my.ini配置文件。里面的配置非常的重要如果配置項(xiàng)有問(wèn)題,會(huì)導(dǎo)致mysql的services不能被正常啟動(dòng)。建議配置項(xiàng)一個(gè)個(gè)配置然后restart mysql的服務(wù),能啟動(dòng)說(shuō)明此配置項(xiàng)沒(méi)問(wèn)題。另外mysql配置完畢后默認(rèn)很多權(quán)限及參數(shù)是OFF的。比如說(shuō)自動(dòng)load本地file到數(shù)據(jù)庫(kù)默認(rèn)就是不被打開(kāi)的。所以要在my.ini中配置允許load本地文件才可以通過(guò)load data infile命令將本地文件傳入mysql。具體我就不一一講解了。遇到問(wèn)題請(qǐng)問(wèn)度娘。
我把我本人遇到的坑的解決方案鏈接提供在下方了。如果您也遇到了請(qǐng)嘗試解決。
https://my.oschina.net/u/1018607/blog/857728
https://blog.csdn.net/xb1231232/article/details/106181694
二,安裝 Heidisql (免費(fèi)的mysql圖形化管理工具)
https://www.heidisql.com/download.php
三,安裝mysql依賴(lài)包
安裝完mysql數(shù)據(jù)庫(kù)后,對(duì)應(yīng)的也要在python中安裝對(duì)應(yīng)的依賴(lài)包,如下。
import pymysql
from sqlalchemy import create_engine
如果你直接在python IDE中導(dǎo)入這兩個(gè)包是肯定不存在的。如果您用的事pycharm的話(huà)可以嘗試intall這兩個(gè)包如果安裝成功最好。如果不行請(qǐng)通過(guò)windows命令行中的pip來(lái)進(jìn)行安裝。
建議不管您用的是什么IDE都直接通過(guò)pip install依賴(lài)包。
pip install pymysql
pip install sqlalchemy
四,安裝EditPlus 5 或者 EmEditor工具
標(biāo)題這兩個(gè)工具可以將我們Excel中導(dǎo)出的xlsx,csv, txt 等格式的數(shù)據(jù)做清洗用的。可以幫助我們更好的對(duì)數(shù)據(jù)進(jìn)行規(guī)整,把規(guī)整過(guò)后的數(shù)據(jù)存入數(shù)據(jù)庫(kù)。
EditPlus 5 安裝及使用
https://blog.csdn.net/syz201558503103/article/details/102327356
EmEditor 安裝及使用
https://www.cnblogs.com/eyesfree/p/9993304.html
https://www.cr173.com/html/25305_1.html
五,python中操作mysql數(shù)據(jù)庫(kù)案例演示
注釋:首先如何使用mysql這里不作解釋,如果有疑問(wèn)請(qǐng)參照我mysql篇的章節(jié)。以下的所有演示都是基于數(shù)據(jù)庫(kù)已經(jīng)有數(shù)據(jù),或者說(shuō)有空表,如何用python對(duì)其進(jìn)行增刪改查訪問(wèn)等操作的演示。下面這個(gè)就是我用HeidiSQL打開(kāi)的MySQL數(shù)據(jù)庫(kù)。接下來(lái)我們進(jìn)行的所有操作都圍繞all_students這章表來(lái)進(jìn)行。
1. 通過(guò)python打開(kāi)mysql中的all_students這章表
注意:代碼依然是基于jupyther來(lái)運(yùn)行的。如果您用的是.py的文件打印請(qǐng)都用print()來(lái)運(yùn)行。
#%%
import pandas as pd
import pymysql
from sqlalchemy import create_engine
#鏈接mysql數(shù)據(jù)庫(kù)(指定到database名)
con = create_engine("mysql+pymysql://root:root@localhost/liupeng")
#鏈接到具體的table
read_sql01 = pd.read_sql('all_students',con)
read_sql01.head(10) #讀取數(shù)據(jù)表內(nèi)容(10行)
2. 按照指定的表頭來(lái)讀取mysql數(shù)據(jù)
#按照指定的表頭來(lái)讀取數(shù)據(jù)
read_sql02 = pd.read_sql('all_students',con,columns=["cls_id","exam_nu","stu_name","gender","total"])
read_sql02.head(3)
3. 按照mysql語(yǔ)句對(duì)數(shù)據(jù)進(jìn)行篩選
#%%
#通過(guò)reqd_sql(sql語(yǔ)句)的方式讀取部分?jǐn)?shù)據(jù)
read_sql03 = pd.read_sql('select cls_id,stu_name,total from liupeng.all_students where cls_id < 3 order by total',con=con)
read_sql03
4. 向mysql數(shù)據(jù)表添加一條數(shù)據(jù)(增)
注釋:對(duì)于mysql中的增刪改所用到的命令都是con.execute函數(shù)!!!
數(shù)據(jù)插入前:
#執(zhí)行sql的增刪改操作用.execute("sql語(yǔ)句")的函數(shù)
#追加一條sql語(yǔ)句到mysql數(shù)據(jù)庫(kù)
con.execute("insert into liupeng.all_students values ('1','劉景芮',100,100,98,298,'女',2018746)")
數(shù)據(jù)插入后:
5. 向mysql數(shù)據(jù)表修改一條數(shù)據(jù)(改)
注意:這里我查的是exam_nu=2018746,因?yàn)椴槊忠呀?jīng)變成關(guān)羽了。所以用唯一的id號(hào)來(lái)進(jìn)行查詢(xún)
con.execute("update liupeng.all_students set stu_name='關(guān)羽' where exam_nu=2018746 ")
6. 向mysql數(shù)據(jù)庫(kù)刪除一條數(shù)據(jù)(刪)
注意:條目被刪除后無(wú)論你指向stu_name還是exam_nu,返回結(jié)果都是0,因?yàn)閿?shù)據(jù)本身已經(jīng)被刪除。
7. 如何將本地?cái)?shù)據(jù)添加到MySQL數(shù)據(jù)表中
強(qiáng)調(diào):如果您的Mysql數(shù)據(jù)庫(kù)的my.ini沒(méi)有做以下的配置建議把配置寫(xiě)到my.ini中。如果您只是臨時(shí)使用一下,請(qǐng)按照我的方法運(yùn)行。不然MySQL不支持本地文件的加載。
例如我們把以下一個(gè)txt文本導(dǎo)入到mysql數(shù)據(jù)庫(kù)中
1魏薇735954186女2018010
1朱瑞麒596034153女2018012
1黃慧婕738184238女2018027
1張章605548163男2018094
1沈政宇517127149男2018108
1宋承澤687453195男2018113
1馬彥冰777252201女2018148
1馬愷618372216男2018166
1王錦程809683259男2018167
1閆瑾746464202女2018196
1王曉渝45122885女2018198
1王浩然798669234女2018246
1徐菁549060204女2018256
創(chuàng)建MySQL對(duì)應(yīng)的表格,我個(gè)人比較懶,因此我直接通過(guò)like命令復(fù)制了all_students的表結(jié)構(gòu)來(lái)創(chuàng)建的stu_test表。
創(chuàng)建過(guò)后的結(jié)構(gòu)是這樣的。。其中沒(méi)有任何的內(nèi)容只有結(jié)構(gòu)!!
導(dǎo)入數(shù)據(jù)到mysql中的stu_test表中。對(duì)于數(shù)據(jù)的導(dǎo)入可以直接通過(guò)圖形化界面來(lái)做。也可以通過(guò)命令行來(lái)做。
這里為了省事,我直接在底層的mysql數(shù)據(jù)庫(kù)通過(guò)load data infile的方法把數(shù)據(jù)追加到stu_test表格中了。
當(dāng)然如果您想通過(guò)python中的語(yǔ)句來(lái)將數(shù)據(jù)導(dǎo)入mysql數(shù)據(jù)庫(kù)中也是可以的。在此我奉上以下鏈接希望對(duì)大家有所幫助。
https://blog.csdn.net/xiaoxiao_plus/article/details/94456986
https://www.cnblogs.com/bjwu/p/10250759.html
總結(jié)
以上是生活随笔為你收集整理的python与excel互通_【python】python vs Excel ( 与mysql数据库之间的交互)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Git命令_git remote与远程仓
- 下一篇: linux cmake编译源码,linu