如何使用Python迭代MySQL表?

如何使用Python迭代MySQL表?,python,mysql,csv,iterator,Python,Mysql,Csv,Iterator,我有一个Python脚本,它使用MySQLdb接口将各种CSV文件加载到MySQL表中 在我的代码中,我使用Python的标准CSV库读取CSV,然后使用insert查询将每个字段一次插入表中。我这样做,而不是使用加载数据,这样我就可以在每个字段的基础上转换空值和其他小的清理 表格格式示例: `id_number` | `iteration` | `date` | `value` 102 | 1 | 2010-01-01 | 63 102

我有一个Python脚本,它使用MySQLdb接口将各种CSV文件加载到MySQL表中

在我的代码中,我使用Python的标准CSV库读取CSV,然后使用
insert
查询将每个字段一次插入表中。我这样做,而不是使用
加载数据
,这样我就可以在每个字段的基础上转换空值和其他小的清理

表格格式示例:

`id_number` | `iteration` | `date`     | `value`
102         | 1           | 2010-01-01 | 63
102         | 2           | 2010-01-02 | NULL
102         | 3           | 2010-01-03 | 65
id\u number=102的第二次迭代中的空值表示
value
与前一天没有变化的情况,即
value
保持63

基本上,我需要将这些空值转换为正确的值。我可以想象这样做的四种方式:

  • 将所有内容插入表中后,运行一个MySQL查询,该查询将自己进行迭代和替换

  • 将所有内容插入表后,运行MySQL查询将一些数据发送回Python,然后在Python中处理,然后运行MySQL查询以更新正确的值

  • 在每次插入之前,使用Python对每个字段进行处理

  • 插入到临时表中,并使用SQL插入到主表中

  • 我可能会想出如何做#2,也许#3,但不知道如何做#1或#4,我认为这是最好的方法,因为它不需要对Python代码进行根本性的更改

    我的问题是A)以上哪种方法是“最好的”和“最干净的”?(速度不是一个真正的问题)和B)我将如何实现1或4


    提前感谢:)

    我认为您可以使用#3选项进行最多的控制和最少的工作量,特别是如果您希望将现有值保持在空值之上,我认为您可能会用#1覆盖这些值


    如果速度不是问题,请将CSV中的每条记录与现有记录进行比较,并使用首选值更新或插入记录。

    添加4)插入临时表,并使用SQL插入主表谢谢,我在中添加了这一点。我也不知道该怎么做,因为我缺少SQL:(我在Mark的提示之前就开始写了这篇文章,我不得不说这是一个很好的建议,但我仍然认为这是如何使用您已经知道的工具快速完成的。感谢您的输入。这是我最初的想法,因为我知道如何编写代码。问题是,我目前使用一个定义将几十个CSV文件插入到t他每天都访问数据库。使用#3,我必须将迭代更改为“记住”上一次迭代以进行比较,这可能会导致现有CSV文件出现问题。这可能是我必须这样做的方式,除非有人能向我展示一个神奇的SQL查询,它可以实现所有功能!