實例:
import pymysql import pandas as pd import numpy as np from sqlalchemy import create_engine df = pd.DataFrame([[1,"Bob",0], [2,"Kim",1]],columns=["id","name","sex"]) df id name sex 0 1 Bob 0 1 2 Kim 1 from sqlalchemy import create_engine engine = create_engine("mysql://{}:{}@{}/{}?charset=utf8".format('username','password','host:port', 'database')) con = engine.connect() df.to_sql(name='students', con=con, if_exists='append', index=False)
若表不存在,創建字段都是text,bigint等
df.to_sql參數介紹:
name:string
SQL表的名稱。
con:sqlalchemy.engine.Engine或sqlite3.Connection
使用SQLAlchemy可以使用該庫支持的任何數據庫。為sqlite3.Connection對象提供了舊版支持。
schema:string,optional
指定架構(如果數據庫flavor支持此)。如果為None,請使用默認架構。
if_exists:{'fail','replace','append'},默認'fail'
如果表已存在,如何表現。
- 失敗:引發ValueError。
- replace:在插入新值之前刪除表。
- append:將新值插入現有表。
index:布爾值,默認為True
將DataFrame索引寫為列。使用index_label作為表中的列名。
index_label:字符串或序列,默認為None
索引列的列標簽。如果給出None(默認)且 index為True,則使用索引名稱。如果DataFrame使用MultiIndex,則應該給出一個序列。
chunksize:int,可選
行將一次批量寫入此大小。默認情況下,所有行都將立即寫入。
dtype:dict,可選
指定列的數據類型。鍵應該是列名,值應該是SQLAlchemy類型或sqlite3傳統模式的字符串。