MySQL 轉 DataFrame
底下代碼說明如何取得資料庫的欄位名稱,再產生 DataFrame 格式。
import mysql.connector as mysql
import pandas as pd
conn=mysql.connect(host="ip", user="帳號", password="密碼", database="資料庫")
cursor=conn.cursor()
cursor.execute("select * from 台灣股市 order by 日期")
rs=cursor.fetchall()
#取得資料庫欄位名
descriptions=cursor.description
columns=[d[0] for d in descriptions]
df=pd.DataFrame(data=rs, columns=columns)
print(df)
結果:
id 日期 開盤 最高 最低 收盤
0 1 1999-01-05 6310.41 6310.41 6111.64 6152.43
1 2 1999-01-06 6082.02 6280.93 5988.06 6199.91
2 3 1999-01-07 6280.38 6409.55 6181.62 6404.31
3 4 1999-01-08 6371.34 6492.87 6371.34 6421.75
4 5 1999-01-11 6472.02 6492.90 6392.49 6406.99
DataFram 儲存庫料庫
df.values 是將 df 轉成 numpy 格式,但 cursor.executemany() 並不吃二維 numpy 格式,所以需把二維 numpy 改成二維 list,如下代碼所示。
import mysql.connector as mysql
conn, cursor=G.connect()
df=......................
datas=[row.tolist() for row in df.values]
cmd="insert into table ...............")
cursor.executemany(cmd, datas)
conn.commit()
conn.close()
