我想寫一個Python熊貓數據框到MySQL數據庫。我意識到可以使用sqlalchemy for this,但我想知道是否有另一種方式可能更容易,最好已經內置到Pandas中。我花了一段時間試圖用For循環來做,但它不可靠。寫一個熊貓數據框到MySQL
如果有人知道更好的方法,將不勝感激。
非常感謝!
我想寫一個Python熊貓數據框到MySQL數據庫。我意識到可以使用sqlalchemy for this,但我想知道是否有另一種方式可能更容易,最好已經內置到Pandas中。我花了一段時間試圖用For循環來做,但它不可靠。寫一個熊貓數據框到MySQL
如果有人知道更好的方法,將不勝感激。
非常感謝!
其他選項以SQLAlchemy的可用於to_sql但將來發行將被棄用,但現在的版本大熊貓0.18.1文檔仍然有效。
根據大熊貓文檔pandas.DataFrame.to_sql你可以用下面的語法:
DataFrame.to_sql(name, con, flavor='sqlite', schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)
指定CON 類型/模式和風味'mysql的',這裏是一些說明:
con:SQLAlchemy引擎或DBAPI2連接(傳統模式) 使用SQLAlchemy可以使用該庫支持的任何數據庫。如果是DBAPI2對象,則只支持sqlite3。
風味:{'sqlite','mysql'},默認'sqlite'將SQL的味道改爲 的用法。使用SQLAlchemy引擎時被忽略。 'mysql'已被棄用, 將在未來的版本中被刪除,但它將通過SQLAlchemy引擎進一步得到支持 。
您可以通過使用pymysql做到這一點:
例如,假設你有下一個用戶名,密碼,主機和端口的MySQL數據庫,並要在數據庫「_2」來寫。
import pymysql
user = 'root'
passw = 'my-secret-pw-for-mysql-12ud'
host = '172.17.0.2'
port = 3306
database = 'data_2'
如果您已經在數據庫中創建:
conn = pymysql.connect(host=host,
port=port,
user=user,
passwd=passw,
db=database,
charset='utf8')
data.to_sql(name=database, con=conn, if_exists = 'replace', index=False, flavor = 'mysql')
如果沒有數據庫中創建,也是有效的,當數據庫已經存在:
conn = pymysql.connect(host=host, port=port, user=user, passwd=passw)
conn.cursor().execute("CREATE DATABASE IF NOT EXISTS {0} ".format(database))
conn = pymysql.connect(host=host,
port=port,
user=user,
passwd=passw,
db=database,
charset='utf8')
data.to_sql(name=database, con=conn, if_exists = 'replace', index=False, flavor = 'mysql')
類似的線程:
to_sql方法http://stackoverflow.com/a/16477603/2027457或http://pandas.pydata.org/pandas-docs/stable/generated/pandas。 DataFrame.to_sql.html – sb0709
to_sql方法適用於我。 但是,請記住,它看起來像它將被棄用,以支持SQLAlchemy: FutureWarning:帶有DBAPI連接的'mysql'flavor已被棄用,並且將在未來的版本中被刪除。 MySQL將通過SQLAlchemy connectable進一步得到支持。 chunksize = chunksize,dtype = dtype) –
到目前爲止仍然是活躍的,因此直到將被淘汰,比將需要一些時間,如果你不升級熊貓比應該工作。張貼答案比。 – sb0709