我正在尝试将Python Pandas Dataframe编写到MySQL数据库中。我意识到可以使用sqlalchemy for this,但我想知道是否有另一种方法可能更容易,最好已经内置到Pandas中。我花了很长时间尝试使用For循环,但它不可行。
如果有人知道更好的方式,我们将不胜感激。
非常感谢!
答案 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')
类似的主题: