当前位置: 首页 > 面试题库 >

如何通过mysqldb将熊猫数据框插入数据库?

贡建修
2023-03-14
问题内容

我可以从python连接到本地mysql数据库,并且可以创建,选择并插入单个行。

我的问题是:我可以直接指示mysqldb提取整个数据帧并将其插入到现有表中,还是需要遍历行?

在这两种情况下,对于具有ID和两个数据列以及匹配的数据帧的非常简单的表,python脚本的外观如何?


问题答案:

更新:

现在有一种to_sql方法,而不是write_frame

df.to_sql(con=con, name='table_name_for_df', if_exists='replace', flavor='mysql')

另请注意:语法可能会在熊猫0.14中更改…

您可以使用MySQLdb建立连接:

from pandas.io import sql
import MySQLdb

con = MySQLdb.connect()  # may need to add some other options to connect

flavorof 设置write_frame'mysql'意味着您可以写入mysql

sql.write_frame(df, con=con, name='table_name_for_df', 
                if_exists='replace', flavor='mysql')

该参数if_exists告诉熊猫表是否已经存在该如何处理:

if_exists: {'fail', 'replace', 'append'},默认值'fail'
fail:如果表存在,则不执行任何操作。
replace:如果存在表,则将其删除,重新创建并插入数据。
append:如果存在表,则插入数据。如果不存在则创建。


尽管write_frame文档当前建议仅在sqlite上运行,但似乎支持mysql,并且实际上在代码库中有很多mysql测试。



 类似资料:
  • 我有一个数据帧: 我需要添加第一行[2,3,4]来获得: 我尝试了和函数,但找不到正确的方法。 如何添加/插入系列到数据框?

  • 问题内容: 我正在编写一个脚本,以将带有标头的大.xlsx文件减少到一个csv中,然后根据标头名称仅写有所需列的新csv文件。 我得到的错误是最后一部分代码,它说 我确定我忽略了一些愚蠢的事情,但是我已经阅读了熊猫网站上的to_csv文档,但我仍然感到茫然。我知道我使用了不正确的to_csv参数,但我似乎无法理解我猜的文档。 任何帮助表示赞赏,谢谢! 问题答案: 选择特定列的方法是这样的-

  • 问题内容: 要按单列过滤数据帧(df),如果我们考虑男性和女性的数据,则可以: 问题1-但是,如果数据跨越多年并且我只想看2014年的男性,该怎么办? 用其他语言,我可能会做类似的事情: (除了我要执行此操作,并在新的数据框对象中获取原始数据框的子集) 问题2。如何循环执行此操作,并为每个唯一的年份和性别集创建一个数据框对象(例如,2013-男,2013-女,2014-男和2014-女的df 问题

  • 问题内容: 我有很多行的python pandas数据框。从这些行中,我想切出并且仅使用“ body”列中包含单词“ ball”的行。为此,我可以这样做: 问题是,我希望它不区分大小写,这意味着如果出现Ball或bAll一词,我也希望它们。进行不区分大小写的搜索的一种方法是将字符串转换为小写,然后以这种方式搜索。我想知道如何去做。我试过了 但这是行不通的。我不确定是否应该在此等性质上使用lambd

  • 问题内容: 我有两个具有以下列名称的数据框: 我想通过加入(左)on获得以下列的数据框: 如果我要连接的列不是索引,我无法弄清楚该怎么做。最简单的方法是什么?谢谢! 问题答案: 您可以按以下方式使用left_on和right_on选项: 从问题中我不能确定您是否只想合并密钥是否位于左侧数据框中。如果是这种情况,则以下将执行此操作(以上内容实际上会进行多对多合并)

  • 问题内容: 通讯: 但是我想通过Ajax将我的电子邮件插入数据库。我不希望页面被重定向,因为每次刷新页面时,都会将空值插入数据库。 我只希望我的电子邮件通过Ajax插入数据库,然后再发送电子邮件,即 应该消失,并且应该有“您已成功订阅”行。 任何简短的代码将非常有用..预先感谢您:) 问题答案: 尝试这个: 和在 不要使用已弃用的。 实际上,如果您的问题是将空值插入数据库,则尝试此操作,这里不需要