Pymysql+Pandas+Sqlalchemy數據庫更新腳本編寫


#導入需要的包,使用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')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM