1. 程式人生 > >那些年我們在python掉進的坑系列之一pandas的to_sql

那些年我們在python掉進的坑系列之一pandas的to_sql

在目前大資料和人工智慧的大趨勢下,越來越多的人開始學習python作為自己入手資料和AI的第一門語言,筆者也是如此。很多人在接觸python的第一步都是學習pandas,主要是這個框架是最接近於R和Matlab學習起來輕鬆易懂。但是在pandas的使用中,有很多問題和很多人因為對程式設計和計算機概念不理解,導致很多很多的坑,筆者在此開一個系列博文,不定期更新中會將自己遇到的坑介紹給大家。

pandas坑之to_sql

pandas是將格式化資料直接程式設計python可讀的DataFrame格式(其實本質上就是字典,並且自動設定了index和colunms),pandas本身的操作給了使用者很好的體驗和資料分析過程,但是pandas從資料庫讀取再轉錄入資料庫是不少新人一直頭疼的問題,筆者也為此最初頭疼不已。根據《利用python進行資料分析》的書中,有大致介紹一個函式——to_sql,相信很多人都是對此瞭解的。

但是,使用to_sql這個函式有一個問題,雖然to_sql函式可以直接將字典資料直接存入資料庫,但是,to_sql限制是非常之大的(畢竟別人寫的類)

我們先看一個操作

import pandas as pd

import pymysql

conn=pymysql.connect(host,port,user,password,charset,db)

df1=pd.DataFrame(list)

df.to_sql(tablename,conn)

相信很多人都是按照以上進行的傻瓜操作,但是筆者在這裡只能告訴你們,這是大錯特錯的。

要學習python最快的方法,並不是上什麼培訓班,看視訊,最快的方法,就是去閱讀python的庫文件,python手冊。畢竟python雖然在使用上非常難,但是在學習上並不是特別難(相對於java和C++)。

根據庫的文件,我們看到to_sql函式支援兩類mysql引擎一個是sqlalchemy,另一個是sqlliet3.沒錯,在你寫入庫的時候,pymysql是不能用的!!!mysqldb也是不能用的,你只能使用sqlalchemy或者sqlliet3!!鑑於sqllift3已經很久沒有更新了,筆者這裡建議使用sqlalchemy!!

所以上面那段要改寫成下面這樣:

import pandas as pd

from sqlalchemy import create_engine

conn = create_engine('mysql+mysqldb://root:[email protected]

:3306/databasename?charset=utf8') 

下面一步很關鍵,注意!!!to_sql函式並不在pd之中,而是在io.sql之中,是sql指令碼下的一個類!!!所以to_sql的最好寫法就是:

pd.io.sql.to_sql(df1,tablename,con=conn,if_exists='repalce')

是不是感覺大功告成了???

那是你的錯覺,趕緊回到資料庫看看吧!!你會發現WTF為什麼我原來的資料都沒有了!!

這就是to_sql的第二個坑if_exists欄位:

很多新人按照網上的教程,都將if_exists欄位定義為‘replace’活著‘fail’,要麼發現原來資料沒有了,要麼發現什麼時候都沒有做!

麻煩請各位新人仔細閱讀文件!!!

fail的意思如果表存在,啥也不做

replace的意思,如果表存在,刪了表,再建立一個新表,把資料插入

append的意思,如果表存在,把資料插入,如果表不存在建立一個表!!

你看懂了嗎,所以大家一定要讀文件!讀文件!!讀文件!!!

相關推薦

CCF篇:那些我們遇到的“小”Problem總結

小總結: 今天水CCF的基礎題,練練速度和一次性的正確率,果然頗有收貨,下面的錯誤可能是我們不經意間就會失誤的操作,到後期若想刷刷有點難度的題,在這些小失誤上浪費時間實在不值得,下面羅列一下我的總結也可以作為我以後的小筆記。 宣告變數n之後,然後在宣告陣列a[n]之前一定

PHP之那些我們踩過的

PHP之那些年我們踩過的坑 1、由於使用單引號,以“ ”為分割符,使用PHP函式explode分割字串,不能正常分割。 原因:這個涉及到單引號與雙引號的區別,在單引號中反斜槓不能被解析。因此,使用explode分割時,如果使用單引號, 會被當作字串,而不是換行符,所以此時,不能正常分

那些我們python系列之一pandas的to_sql

在目前大資料和人工智慧的大趨勢下,越來越多的人開始學習python作為自己入手資料和AI的第一門語言,筆者也是如此。很多人在接觸python的第一步都是學習pandas,主要是這個框架是最接近於R和Matlab學習起來輕鬆易懂。但是在pandas的使用中,有很多問題和很多人

“數據治理那點事”系列之一那些我們一起踩過的

分享 加工 可視化 原則 流程 自動化 影響 發揮 業務 這是一個系列文章,沈澱了我在數據治理領域的一些實踐和思考。共分為5篇: · 數據治理:那些年,我們一起踩過的坑 主要講講數據治理工作中常見的一些誤區。 · 要打仗你手裏先得有張地圖:元數據管理 這一篇講講元數據的概念

那些我們遇到的(集中貼,不定期更新)

不定期更新 展示 array 定期 文檔 table ide 一個 arr 歡迎留言更正 $sp.getVariablesArray()和$sp.getRecordVariablesArray(gr);前者已過期但任然可以使用,後者為最新文檔裏面所提及的,但兩者都存在一個

那些我們踩的,依然有人在踩

       去年公司南山接了一個大單,由於專案沒有類似的借鑑完全要靠自己摸索,然後是做一版感覺不行又要調整,反反覆覆修改,然後新功能又要開發,一時一個人根本忙不過來,非常頭痛,為工作更方便乾脆安營扎山寨在客戶那邊,邊開發邊討論解決方案,每天都是半夜才回到家。但是由於新

[Hive]那些我們踩過的Hive

1. 缺少MySQL驅動包1.1 問題描述Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException: The specified datastore drive

那些我們踩過的php(持續更新)

原因:在第一次迴圈時,陣列的指標指向下一個元素,得到的陣列值為2,這個時候,php陣列內部會複製一份臨時的陣列$tmp, $tmp的指標指向第二個元素,後續呼叫current($a),實際上是取的臨時陣列$tmp的當前值,而$tmp的指標始終指向第二個元素,所以輸出結果永遠是2

那些 我們在互聯網公司之間做的二選一

開放 經營 法律 如何 研究 和數 就會 漏洞 合作 眾所周知,亞馬遜的AWS平臺在自用的同時也對外提供計算、存儲和網絡等基礎設施服務,而沃爾瑪方面所使用的一些科技公司的應用程序同樣也會在AWS平臺上運行。但前不久,沃爾瑪告知這些科技公司如果它們想要繼續獲得更多業務,就不能

那些我跳過的(0)

編程軟件 思想 模塊化 告訴 流程 一個 公司 框架 設計   1、最近在網上總是可以看到很過java技能培訓廣告,真的是java太火了嗎?私心裏認為寫代碼思想更重要!   2、剛入職的小白,進入公司一切顯得熟悉又陌生。熟悉的代碼,熟悉的那幾種編程軟件,陌生的業務流程,陌生

BZOJ2808 : 那些我們畫格子

get else return 我們 bzoj 復雜度 pri int main 若$\min(n,m)=1$,那麽設$f[i][j][k]$表示考慮前$i$個格子,改變了$j$次顏色,$i$的顏色為$k$的方案數,直接轉移即可。 否則$\min(n,m)\geq 2$,

那些我們沒能bypass的xss filter[from wooyun]

方法 type 只需要 ssd google scroll char 正在 最短 原文鏈接:http://zone.wooyun.org/content/6899 小弟初學xss才10天。不過個人很喜歡收集xss payload.在這裏把自己平時挖xss時會用到的paylo

那些我們遇到的Mac問題

size 問題 進入 應用 mac os 修復 否則 點擊 OS 一、背景 Mac Pro 出現無法登陸。現象:Mac輸入密碼後,電腦又重新啟動。如上現象反復,左上角伴隨有代碼。 現象前幾天存在更新安裝系統未完成。隔天,開機發現此問題。此現象已是第二次。 二、解決方

HI設計師酒店:那些,我們最美的童年記憶!

酒店設計 紅專設計 項目名稱:HI設計師酒店項目地址:成都總府路商業場街 (春熙路對面)設計單位:成都紅專設計說明:HI設計師精品酒店是紅專設計近期針對80、90進行定制設計的精品酒店設計作品!在HI設計師精品酒店的設計中、紅專使用了80、90兒時的經典情景。如:韓梅梅和李雷、超級瑪麗、俄羅斯方塊等經

那些我們追過的計算機經典書

C/C++ Python 深度學習 JavaScript 神經網絡 點擊關註 異步圖書,置頂公眾號每天與你分享 IT好書 技術幹貨 職場知識參與文末話題討論,每日贈送異步圖書。——異步小編經典作品是一些產生某種特殊影響的書,它們要麽自己以遺忘的方式給我們的想像力打下印記,要麽喬裝成個人或集

那些我們一起追逐的多線程(Thread、ThreadPool、委托異步調用、Task/TaskFactory、Parallerl、async和await)

col 不同的 告訴 新的 OS 代碼區 monit strong list 一. 背景   在剛接觸開發的頭幾年裏,說實話,根本不考慮多線程的這個問題,貌似那時候腦子裏也有沒有多線程的這個概念,所有的業務都是一個線程來處理,不考慮性能問題,當然也沒有考慮多線程操作一條

史玉柱身邊的打工皇后十二掙了5個億 那些年我們走過的路(每天要處理的事情多如牛毛,躲債,抵押,合作,借款,很多事情來不及向史玉柱彙報,她就必須立刻做出決定,把事情分類,先處理最重要,最急切的事)

  看看這位打工皇后,十二年掙了5個億。1995年20歲的程晨從南京大學畢業加盟了巨人集團。當時巨人集團正好是史玉柱最輝煌的時候,當時產值10個億,史玉柱被福布斯評為內地富豪第八名。 程晨從底層業務員起步,三個月轉正,半年後升為業務主管。她勤奮上進,別人花8小時跑業務

那些我們經常遇到的瀏覽器相容性問題

 那些年我們追過的男孩或者女孩,你還記得嗎?他或者她也許再也不會出現在你的生命中了,但是,我們每天還是會遇到熟悉的再也不能熟悉的那些瀏覽器相容性Bug。     在總結瀏覽器問題之前,我覺得我們應該掌握目錄中的1~7標題的內容,對後面的問題,我想應該會更明

Android 學習之那些我們遇到的BUG2:Android 8.0 自定義廣播接收失敗

自學安卓的過程中遇到的一個問題,在嘗試實現郭霖大佬的《第一行程式碼》第二版中的第五章的傳送自定義廣播時,發現自定義的廣播接收失敗! 按照要求完成相應的程式碼編寫後,發現點選按鈕,Toast未顯示,表明廣播接收器沒能接收到自定義的廣播。 解決方法: 高版本的Android對於廣播的

那些 我們一起找過的工作

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!