#導入須要的包,使用pymysql操做數據庫mysql
#pandas包很強大,能夠直接讀取數據表,建立dataframe數據結構,同時能夠直接將dataframe導出到數據庫sql
#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 = '***'app
#引擎:也就是實體數據庫鏈接。傳入參數:數據庫類型+鏈接庫+用戶名+密碼+主機,字符編碼
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:若是表存在,則將數據添加到這個表的##後面spa
df1 = pd.read_excel(r'***.xlsx')
put_data(df1)excel
#從數據庫提取數據表
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')orm