如何用Python遍历MySQL表?
我有一个Python脚本,它使用MySQLdb接口将各种CSV文件加载到MySQL表中。
在我的代码里,我用Python自带的CSV库来读取CSV文件,然后逐个字段地插入到表里,使用的是INSERT
查询。我选择这样做而不是用LOAD DATA
,是因为我想在每个字段的基础上处理空值和其他小问题。
示例表格格式:
`id_number` | `iteration` | `date` | `value`
102 | 1 | 2010-01-01 | 63
102 | 2 | 2010-01-02 | NULL
102 | 3 | 2010-01-03 | 65
在第二次插入id_number = 102
时的空值,表示这个value
和前一天没有变化,也就是说value
依然是63。
总的来说,我需要把这些空值转换成正确的值。我想到了四种方法:
在所有数据插入到表中后,运行一个MySQL查询,让它自己去遍历和替换。
在所有数据插入到表中后,运行一个MySQL查询,把一些数据发回给Python,处理完再运行一个MySQL查询来更新正确的值。
在每次插入之前,先在Python中逐个字段处理。
先插入到一个临时表中,然后用SQL把数据插入到主表。
我可能能搞定第2种和第3种方法,但对第1种和第4种方法没什么头绪,我觉得这两种方法最好,因为这样就不需要对Python代码做根本性的修改。
我的问题是A) 上面哪种方法是“最好”和“最干净”的?(速度不是主要问题。)B) 我该如何实现第1种或第4种方法?
提前谢谢你们 :)
1 个回答
2
我觉得你选择的第三个选项会让你掌控得最好,而且工作量最少。特别是如果你想保留已有的值而不是用空值替代的话,我觉得用第一个选项可能会有风险,因为那样可能会把已有的值覆盖掉。
如果速度不是问题的话,你可以对每一条CSV记录进行比较,看看它和现有记录有什么不同,然后用你想要的值来更新或者插入记录。