Python MySQLdb LOAD LOCAL INFILE问题

时间:2010-05-27 15:37:17

标签: python mysql

问题很简单。当我执行以下操作时,我会得到不同的结果,具体取决于我是从MySQL控制台运行它还是从使用MySQLdb的Python脚本中运行它:

LOAD DATA LOCAL INFILE '/tmp/source.csv' INTO TABLE test 
FIELDS TERMINATED BY '|' 
IGNORE 1 LINES;

控制台提供以下结果:

  • 记录:35002已删除:0跳过:0警告:0

Python(通过.info())返回以下内容:

  • 记录:34977删除:0跳过:0警告:8

总而言之,相同的源文件,相同的SQL请求,不同的结果。

从控制台我可以'显示警告'以更好地处理哪些记录导致问题以及为什么但是从Python我无法确定如何执行此操作或更重要的是问题的原因可能是什么。

有什么建议吗?

  • MySQL服务器'5.1.41-3ubuntu12.1'
  • Python'2.6.5'
  • 表格是MyISAM

1 个答案:

答案 0 :(得分:1)

加载数据后,执行

SELECT @@warning_count;

检查是否大于0。 如果是执行

SHOW WARNINGS;

并转储结果(返回3列:Level,Code,Message)或抛出异常。 您可以像其他select * from ... query一样执行这两个语句。