MYSQLdb / Python值错误但仍然得到了期望的结果

时间:2015-11-03 20:58:45

标签: python mysql sql

我在python中编写了一段代码,它使用mySQLdb模块在数据库中搜索给定月份内的日期。我得到了我想要的结果,但我也收到了错误信息。我相信它是因为日期字段中的通配符,但我没有理解它是如何出错并仍然返回记录。

def GetWeeks(self):
        guiAction = guiConnections()
        #creates the DBconnection as a tuple, with cursor as index [0]
        DBcon = DBconnect()
        self.Month = "09"
        self.Year = "2015"
        #Creates the SQL statement with the DBsearch function
        self.WeekSearch = DBsearch((self.Year)+"-"+(self.Month)+"-"+"__", ("Date"),Keyword = "LIKE")
        DBcon[0].execute(self.WeekSearch)
        c = DBcon[0].fetchall()
        for row in c:
            print row
    GetWeeks(self)

上面是主函数,DBsearch转到另一个带有通用SQL select语句的文件。日期字段设置为"日期"类型。

SELECT * FROM `Timesheet`
WHERE `Date` LIKE "2015-09-%"

这是传递的SQL select语句,它会在之后返回所有记录,但它也会返回

警告:日期值不正确:' 2015-09 - %'对于列'日期'在第1行   DBcon [0] .execute(self.WeekSearch)

我不认为代码本身就是问题(虽然很麻烦,但有点粗糙)我只是不确定如何删除此错误,或者绕过它。

我无法在日期格式化的字段错误中找到与通配符相关的任何其他线程, 很高兴提供更多信息 感谢

1 个答案:

答案 0 :(得分:0)

其他人from what it seems已经发现了这种行为。一般来说,因为这是一个Warning,所以应该有很多值得关注的理由,但是如果他们误导你can always supress them

作为指向可能在某些时候不可用的网址的必要性,发布的第一个错误的建议解决方案是,我复制:

  

建议修复:

     

使MySQL在执行LIKE查询时不会引发char / datetime不匹配的警告。

     

临时修复是重写查询,如下所示:

     

的MySQL> select * from t where cast(d as char) like '2010-01-%';