Python3 csv 檔案通過pandas寫入資料庫
阿新 • • 發佈:2018-11-10
import pandas as pd
import os
from sqlalchemy import create_engine
匯入sqlalchemy
#配置資料庫
db_info = {'user': 'root',
'password': 'xxx',
'host': 'localhost',
'port': 3306,
'database': 'ip'
}
#配置資料庫引擎
engine = create_engine('mysql+pymysql://%(user)s:%(password) [email protected]%(host)s:%(port)d/%(database)s?charset=utf8' % db_info, encoding='utf-8')
def readFile():
try:
#獲取當前路徑
cwd = os.getcwd()
#遍歷當前路徑,路徑,檔案全部爬去出來
for dirpaths, dirnaames,filenames in os.walk(cwd):
#判斷csv檔案是否存在
for filename in filenames:
if filename.endswith(".csv"):
#讀取檔案
df = pd.read_csv(filename,encoding="utf8",sep=',',dtype={'code':str})
print(df)
#直接寫入資料庫,'t_pandasRead'為表名,會自動建立一個表,不需要自己動手建立
#to_sql函式支援兩類mysql引擎一個是sqlalchemy,另一個是sqlliet3,在寫入庫的時候,pymysql(python3),mysqldb(python2)是不能用的,只能使用sqlalchemy或者sqlliet3.
df.to_sql('t_pandasRead',con=engine,if_exists='append',index=False)
#第一個引數't_pandasRead'是需要匯入的表名
#第二個引數資料庫引擎
#第三個引數if_exists="",引號裡面可以跟三個引數,fail(如果表存在,啥也不做),replace(如果表存在,刪了表,再建立一個新表,把資料插入),append(如果表存在,把資料插入,如果表不存在建立一個表)
#第四個引數是否需要配置索引
這裡,讀取出來的資料型別是text,double,bigint型別,沒有索引,雖然儲存方便,但是不適合資料庫管理,比較適合資料圖形化操作,請根據需要來選擇,否則大坑小坑不斷,後患無窮呢!
#呼叫函式
readFile()