使用python的pandas庫(kù)讀取csv文件保存至mysql數(shù)據(jù)庫(kù)
第一:pandas.read_csv讀取本地csv文件為數(shù)據(jù)框形式
data=pd.read_csv('G:\data_operation\python_book\chapter5\\sales.csv')
第二:如果存在日期格式數(shù)據(jù),利用pandas.to_datatime()改變類(lèi)型
data.iloc[:,1]=pd.to_datetime(data.iloc[:,1])
注意:=號(hào),這樣在原始的數(shù)據(jù)框中,改變了列的類(lèi)型
第三:查看列類(lèi)型
print(data.dtypes)
第四:方法一:保存至MYSQL【缺點(diǎn)耗時(shí)長(zhǎng)】
利用MYSQLdb庫(kù),封裝成一個(gè)類(lèi),實(shí)現(xiàn)創(chuàng)建表,添加數(shù)據(jù)的操作,缺點(diǎn)耗時(shí)長(zhǎng)
class Jess_mysql():
"""
設(shè)置mysql類(lèi),實(shí)現(xiàn)創(chuàng)建數(shù)據(jù)框,表,及添加數(shù)據(jù)
"""
def __init__(self):
self.mysql=MySQLdb.connect(user=mysql_name,host=mysql_host,password=mysql_password,database=mysql_database)
self.conn=self.mysql.cursor()
def create_table(self,table_names,col_names):
"""
創(chuàng)建表
:param table_names: 表名
:param col_names: 列名,列表格式
:return:
"""
tables=' varchar(20),'.join(['%s'] *len(col_names))
sql_yuju='create table if not exists `{t}` ({v} varchar(20))'.format(t=table_names,v=tables)#字段需要標(biāo)注格式
ss=sql_yuju %(tuple(col_names))
print(ss)
self.conn.execute(ss)
self.mysql.commit()
def add_data(self,table_name,col_names,col_data):
"""
:param table_name: 表名
:param col_names: 列名,字段名
:param col_data: 字段值
:return:
"""
colname=','.join(['%s']*len(col_names))
data=','.join(['%s']*len(col_data))
sql_yuju='INSERT INTO `{t}` ({name}) VALUES ({data});'.format(t=table_name,name=colname,data=data)
ss=sql_yuju%(*col_names,*col_data)
#print(ss)
self.conn.execute(ss)
self.mysql.commit()
第五:利用sqlalchemy的create_engine()方法
1、創(chuàng)建連接
import sqlalchemy
#engine=sqlalchemy.create_engine('mysql + mysqldb://root:123456@118.24.26.227:3306/python_yuny')
engine=sqlalchemy.create_engine('mysql+mysqldb://{user}:{password}@{host}:3306/{database}'.format
(user=mysql_name,password=mysql_password,host=mysql_host,database=mysql_database))
2、利用pd.io.sql.to_sql()
pd.io.sql.to_sql(frame=data,name='yunying',con=engine,index=False,if_exists='append')
注意相關(guān)參數(shù)的設(shè)置。
此外,保存到mysql中,需要注意日期格式的列,因?yàn)樵趍ysql對(duì)應(yīng)的field設(shè)置格式為varchar(20)后,原始的日期2015-8-9,寫(xiě)入數(shù)據(jù)庫(kù),只有2015,這需要兩步操作。
a、上面第二目錄的,利用pandas.to_datetime(,format='%Y-%m-%d') #format的格式要和原始字符2016-8-9格式一樣
b、利用datetime庫(kù),實(shí)現(xiàn)format='%Y%m%d'
x=data.shape[0] for i in range(x): col_data=list(df.iloc[i,:]) col_data[1]=datetime.date.strftime(col_data[1],'%Y%d%m')
•這一步后,日期格式由原始的2016-6-2,轉(zhuǎn)為20160606,就可以以寫(xiě)入數(shù)據(jù)庫(kù)對(duì)應(yīng)的字段【其字段類(lèi)型varchar(20)】
第六:讀取mysql的數(shù)據(jù)
df=pd.read_sql('select * from %s'%table_name,con=engine,index_col=None)
默認(rèn)不設(shè)置索引列,可以自行指定索引列名。
總結(jié)
以上所述是小編給大家介紹的使用python的pandas庫(kù)讀取csv文件保存至mysql數(shù)據(jù)庫(kù),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- python讀寫(xiě)excel數(shù)據(jù)--pandas詳解
- Python入門(mén)之使用pandas分析excel數(shù)據(jù)
- Python利用pandas處理Excel數(shù)據(jù)的應(yīng)用詳解
- python基于Pandas讀寫(xiě)MySQL數(shù)據(jù)庫(kù)
- Python使用Pandas庫(kù)實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的讀寫(xiě)
- Python 利用pandas和mysql-connector獲取Excel數(shù)據(jù)寫(xiě)入到MySQL數(shù)據(jù)庫(kù)
相關(guān)文章
python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5工具欄控件QToolBar的詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5工具欄控件QToolBar的詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02
Python實(shí)現(xiàn)將Markdown文檔轉(zhuǎn)為EPUB電子書(shū)文件
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)將Markdown文檔轉(zhuǎn)為EPUB電子書(shū)文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-06-06
python區(qū)塊及區(qū)塊鏈的開(kāi)發(fā)詳解
這篇文章主要介紹了python區(qū)塊及區(qū)塊鏈的開(kāi)發(fā)詳解的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Python入門(mén)之實(shí)例方法、類(lèi)方法和靜態(tài)方法的區(qū)別講解
這篇文章主要介紹了Python入門(mén)之實(shí)例方法、類(lèi)方法和靜態(tài)方法的區(qū)別講解,實(shí)例方法是在創(chuàng)建了類(lèi)的實(shí)例之后才能被調(diào)用的方法,類(lèi)方法是在不需要?jiǎng)?chuàng)建類(lèi)的實(shí)例的情況下就可以調(diào)用的方法,最后,靜態(tài)方法是與類(lèi)和類(lèi)的實(shí)例都沒(méi)有綁定關(guān)系的方法,需要的朋友可以參考下2023-10-10
python引用(import)某個(gè)模塊提示沒(méi)找到對(duì)應(yīng)模塊的解決方法
今天小編就為大家分享一篇python引用(import)某個(gè)模塊提示沒(méi)找到對(duì)應(yīng)模塊的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Pygame游戲開(kāi)發(fā)之太空射擊實(shí)戰(zhàn)盾牌篇
相信大多數(shù)8090后都玩過(guò)太空射擊游戲,在過(guò)去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來(lái)自己動(dòng)手實(shí)現(xiàn)它,在編寫(xiě)學(xué)習(xí)中回顧過(guò)往展望未來(lái),在本課中,我們將為玩家添加一個(gè)盾牌以及一個(gè)用于顯示盾牌等級(jí)的欄2022-08-08
python使用prettytable內(nèi)置庫(kù)美化輸出表格
這篇文章主要介紹了python使用prettytable內(nèi)置庫(kù)美化輸出表格,prettytable是pyhton內(nèi)置庫(kù),文章圍繞主題的相關(guān)資料展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06
python編寫(xiě)小程序探測(cè)linux端口占用情況
這篇文章主要介紹了python編寫(xiě)小程序探測(cè)linux端口占用情況,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-12-12
tensorflow實(shí)現(xiàn)在函數(shù)中用tf.Print輸出中間值
今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)在函數(shù)中用tf.Print輸出中間值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01

