1. 程式人生 > >Python:用Pandas讀CSV檔案寫到MySQL

Python:用Pandas讀CSV檔案寫到MySQL

彙總一下,自己最近在使用Python讀寫CSV存資料庫中遇到的各種問題。
上程式碼:

reload(sys)
sys.setdefaultencoding('utf-8')
host = '127.0.0.1'
port = 3306
db = 'world'
user = 'root'
password = '123456'

con = MySQLdb.connect(host=host,charset="utf8",port=port,db=db,user=user,passwd=password)
try:
    df = pd.read_sql(sql=r'select * from city'
, con=con) df.to_sql('test',con=con,flavor='mysql') except Exception as e: print(e.message)

不出意外的話會打印出一句:database flavor mysql is not supported
在stackoverflow上找到了答案:The flavor ‘mysql’ is deprecated in pandas version 0.19.

我們換一種方式:

reload(sys)
sys.setdefaultencoding('utf-8')
host = '127.0.0.1'
port = 3306 db = 'world' user = 'root' password = '123456' engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db)) try: df = pd.read_sql(sql=r'select * from city', con=engine) df.to_sql('test',con=engine,if_exists='append',index=False) except Exception as
e: print(e.message)

執行下,ok,可以存入了index引數表示是否把DataFrame的index當成一列來儲存,一般來說是不需要的,所以賦值為False

現在看似問題都解決了,但是還有一個小問題。
假如我有一個含有中文的csv檔案(本人Window):
name age class
小明 15 一年級
小張 18 三年級

engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db))

try:
    df = pd.read_csv(r'C:\Users\xx\Desktop\data.csv')
    print(df)
    df.to_sql('test', con=engine, if_exists='append', index=False)
except Exception as e:
    print(e.message)

列印處理以後亂碼了。我們在讀csv時候最好指定編碼,我的本地GBK:

df = pd.read_csv(r'C:\Users\xx\Desktop\data.csv',encoding='gbk')

我們可以正常的列印資訊了,但是又報錯了,錯誤如下:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)

還是編碼問題,原因呢,我們存到資料庫時候沒有指定編碼。解決這個問題時候也是被坑了一把,網上說什麼的都有。過程就不說了,看程式碼:

engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))

解決了

相關推薦

PythonPandasCSV檔案MySQL

彙總一下,自己最近在使用Python讀寫CSV存資料庫中遇到的各種問題。 上程式碼: reload(sys) sys.setdefaultencoding('utf-8') host = '127.0.0.1' port = 3306 db = 'wor

pandas讀取csv檔案出現問題

讀取csv檔案 first = pd.read_csv(r'C:\Users\lenovo\Desktop\廣州.csv',encoding="utf-8") second = pd.read_excel(r'C:\Users\lenovo\Desktop\網點規則調整申請表_20181219_

pandascsv檔案錯誤解決辦法(重要)

實踐解決辦法--------------------------------------------------------------------- 用pandas讀取csv檔案特別說明: 1、檔名稱前加r解決檔名(含路徑中特殊符號)字串轉義問題;如:pd.read

python中利用pandascsv文件

and clas byte test pytho csv文件 err 文件 blog 問題1:錯誤提示:UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xb8 原因:含有中文字符 import pandas pa

資料處理pandas處理大型csv檔案

在訓練機器學習模型的過程中,源資料常常不符合我們的要求。大量繁雜的資料,需要按照我們的需求進行過濾。拿到我們想要的資料格式,並建立能夠反映資料間邏輯結構的資料表達形式。 最近就拿到一個小任務,需要處理70多萬條資料。 我們在處理csv檔案時,經常使用pandas,可以幫助處理較大的

一分鐘學會csv檔案csv檔案python實現)

  import csv with open('Python-Predict/Data/train.csv') as tra: rdr = csv.reader(tra) items = list(rdr) print("rdr:",rdr) print(items)

pythonmysql互動詳解---- (pandascsv檔案,executemny批量寫入db中

主要用到pandas從csv檔案中抓資料,pandas抓出的資料是dataframe格式的,而且有的可能是Nan,抓出df格式的資料需要再處理,才能批處理的寫入資料庫中,executemany批出的格式不能是df,這裡處理成list import pymysql import codec

pandas讀取csv檔案進行處理時報錯 TypeError: invalid type compariso

用pandas讀取csv檔案並對csv裡面的資料進行處理的時候,有可能會遇到這樣的錯誤: TypeError: invalid type comparison 1 無效的型別比較 這時可以去列印一下你的dataframe中的資料看看 1、可能有些條目中沒有資料,列印

pythonCSV檔案內容

f = open(r"D:\test.csv", 'w') f.write('1,2,3\n') f.write('4,5,6\n') f.close() 注意:上面例子中的123456這6個數字會分別寫入不同的單元格里,即以逗號作為分隔符將字串內容分開放到不同單元格 上面例子的圖:

python讀取json格式檔案pandas讀取excel檔案

IT Xiao Ang Zai 9月30號 版本:python3.7 程式設計軟體:sublime 一:python解析json資料 1.什麼是json: (1)JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它

Pythonpandas讀取*.csv檔案出現編碼問題

1、問題 在使用Python中pandas讀取csv檔案時,由於檔案編碼格式出現以下問題: Traceback (most recent call last): File "pandas\_libs\parsers.pyx", line 1134, in pandas

pandas21 csv檔案read_csv(5.文字資料例項)(詳細 tcy)

例項 2018/12/27 目錄: 第1部分:csv文字檔案讀寫 pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371 pandas 讀csv檔案read_csv(2.read_csv引數介紹)

pandas21 csv檔案read_csv(4.to_csv文字資料)(詳細 tcy)

寫入CSV資料 2018/12/27 目錄: 第1部分:csv文字檔案讀寫 pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371 pandas 讀csv檔案read_csv(2.read_cs

pandas21 csv檔案read_csv(1.文字概要)(詳細 tcy)

文字檔案讀寫   目錄: 第1部分:csv文字檔案讀寫 pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371 pandas 讀csv檔案read_csv(2.read_csv引

使用python pandas讀取csv檔案資料

csv是我接觸的比較早的一種檔案,比較好的是這種檔案既能夠以電子表格的形式檢視又能夠以文字的形式檢視。最早接觸是在別人的Perl指令碼中,或許是為了充分利用Perl的文字處理能力。不過,日常的生活工作

Python按指定列讀取csv檔案檔案時的隔行問題

程式設計環境:Python3.5 先講一下如何讀寫csv檔案: import csv csvfile=open('train.csv','r') #Python3.5這裡不要用rb reader=csv.reader(csvfile) train=[] for line

PythonPython程式呼叫C/C++編譯的可執行檔案

[TODO] 用python程式呼叫C/C++編譯的可執行檔案 ************************華麗的分割線************************ step1:cppexec.cpp #include <iostream> int ad

python:pandas合併csv檔案(圖書資料整合)

資料整合:將不同表的資料通過主鍵進行連線起來,方便對資料進行整體的分析。 兩張表:ReaderInformation.csv,ReaderRentRecode.csv ReaderInformation.csv: ReaderRentRecode.cs

Python pandas讀取csv檔案直接轉化成二維列表(Dataframe轉化為list)

相信很多小夥伴在讀格式化的資料檔案的時候用普通的readlines方法覺得很繁瑣,pandas具有強大的格式化資料處理能力,所以讀取檔案用pandas事半功倍,讀取進來的是Dataframe格式,可以繼續使用pandas進行資料處理,當然如果想要轉化為二維list格式,也有一

python/熱力圖】從csv檔案入(x,y,z)畫簡單熱力圖

# -*- coding: utf-8 -*- """ Created on Fri Nov 10 21:20:25 2017 @author: zhoulei """ # Required Packages # 迴歸 import matplotlib.pyplot as