那些年我們在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]
下面一步很關鍵,注意!!!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 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!