#導入需要的包,使用pymysql操作數據庫
#pandas包很強大,可以直接讀取數據表,創建dataframe數據結構,同時可以直接將dataframe導出到數據庫
#sqlalchemy創建引擎,與數據庫進行連接
import pymysql
import pandas as pd
import sqlalchemy
from sqlalchemy import create_engine
from pandas import DataFrame
#把數據表導入數據庫
def put_data(df1):
user = '***'
pwd = '***'
host = '***'
port = 3306
DB = '***'
#引擎:也就是實體數據庫連接。傳入參數:數據庫類型+連接庫+用戶名+密碼+主機,字符編碼
conn = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(user, pwd, host, port, DB)
conn1 = create_engine(conn)
#to_sql函數支持兩類mysql引擎一個是sqlalchemy,另一個是sqlliet3.沒錯,在你寫入庫的時候,pymysql是不能用的!!!mysqldb也是不能用的,你只能使用sqlalchemy或者sqlliet3!注意!!!to_sql函數並不在pd之中,而是在io.sql之中,是sql腳本下的一個類!!!所以to_sql的最好寫法就是:
return pd.io.sql.to_sql(df1, name='***', con=conn1, if_exists='append')
#to_sql參數說明:(數據, '表名', con=連接鍵, schema='數據庫名', if_exists='操作方式')? ? 操作方式有append、fail、replace、append:如果表存在,則將數據添加到這個表的##后面
df1 = pd.read_excel(r'***.xlsx')
put_data(df1)
#從數據庫提取數據表
def get_data():
user = '***'
pwd = '***'
host = '***'
port = 3306
DB = '***'
conn = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(user, pwd, host, port, DB)
conn1 = create_engine(conn)
sql_cmd = 'SELECT * FROM ***'
return pd.read_sql(sql=sql_cmd, con=conn1)
df1 = get_data()
df1.to_excel(r'***.xlsx')