How to insert pandas dataframe via mysqldb into database?(如何通过mysqldb将pandas数据框插入到数据库中?)
问题描述
我可以从 python 连接到我的本地 mysql 数据库,我可以创建、选择和插入单个行.
I can connect to my local mysql database from python, and I can create, select from, and insert individual rows.
我的问题是:我可以直接指示 mysqldb 获取整个数据帧并将其插入现有表中,还是需要遍历行?
My question is: can I directly instruct mysqldb to take an entire dataframe and insert it into an existing table, or do I need to iterate over the rows?
在这两种情况下,对于具有 ID 和两个数据列以及匹配数据框的非常简单的表,python 脚本会是什么样子?
In either case, what would the python script look like for a very simple table with ID and two data columns, and a matching dataframe?
推荐答案
更新:
现在有一个 to_sql 方法,这是执行此操作的首选方法,而不是 write_frame:
df.to_sql(con=con, name='table_name_for_df', if_exists='replace', flavor='mysql')
另请注意:pandas 0.14 中的语法可能会发生变化...
您可以设置与MySQLdb的连接:
from pandas.io import sql
import MySQLdb
con = MySQLdb.connect() # may need to add some other options to connect
将write_frame的flavor设置为'mysql'表示可以写入mysql:
Setting the flavor of write_frame to 'mysql' means you can write to mysql:
sql.write_frame(df, con=con, name='table_name_for_df',
if_exists='replace', flavor='mysql')
参数if_exists告诉pandas如果表已经存在如何处理:
The argument if_exists tells pandas how to deal if the table already exists:
if_exists: {'fail', 'replace', 'append'},默认 'fail'
fail:如果表存在,则什么都不做.
replace:如果表存在,删除它,重新创建它,然后插入数据.
append:如果表存在,插入数据.不存在则创建.
if_exists: {'fail', 'replace', 'append'}, default'fail'
fail: If table exists, do nothing.
replace: If table exists, drop it, recreate it, and insert data.
append: If table exists, insert data. Create if does not exist.
虽然 write_frame docs 目前建议它只适用于 sqlite,mysql 似乎受支持,实际上有相当多的 代码库中的mysql测试.
Although the write_frame docs currently suggest it only works on sqlite, mysql appears to be supported and in fact there is quite a bit of mysql testing in the codebase.
这篇关于如何通过mysqldb将pandas数据框插入到数据库中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何通过mysqldb将pandas数据框插入到数据库中?
基础教程推荐
- SQL Server 实例在登录协商期间返回无效或不受支持的协议版本 2021-01-01
- 是否可以执行按位分组功能? 2021-01-01
- 将 SQL Server DateTime 列迁移到 DateTimeOffset 2021-01-01
- 无法解决整理冲突 2021-01-01
- SQL:使用来自具有相同列名的两个表中的数据... 2021-01-01
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01
- 需要 MySQL 5.1 中的抽象触发器来更新审计日志 2021-01-01
- 如何使用 mysql.connector 禁用查询缓存 2022-01-01
- SQL 效率:WHERE IN 子查询 vs. JOIN 然后 GROUP 2021-01-01
- 在 SQL 中连接多个表 2021-01-01
