将Pandas Dataframe编写到MySQL

时间:2016-10-09 03:27:52

标签: python mysql dataframe

我正在尝试将Python Pandas Dataframe编写到MySQL数据库中。我意识到可以使用sqlalchemy for this,但我想知道是否有另一种方法可能更容易,最好已经内置到Pandas中。我花了很长时间尝试使用For循环,但它不可行。

如果有人知道更好的方式,我们将不胜感激。

非常感谢!

2 个答案:

答案 0 :(得分:1)

sqlalchemy 的另一个选项可以使用 to_sql ,但将来发布的版本将被弃用,但现在版本 pandas 0.18.1文档是仍然活跃。

根据pandas文档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。

     

flavor:{'sqlite','mysql'},默认'sqlite'SQL的味道    使用。使用SQLAlchemy引擎时忽略。 'mysql'已被弃用    将在以后的版本中删除,但它将得到进一步支持    通过SQLAlchemy引擎。

答案 1 :(得分:0)

您可以使用pymysql:

来完成

例如,假设您拥有一个包含下一个用户,密码,主机和端口的MySQL数据库,并且您希望在数据库中写入数据_'。

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')

类似的主题:

  1. Writing to MySQL database with pandas using SQLAlchemy, to_sql
  2. How to insert pandas dataframe via mysqldb into database?