我收到许多相同类型的警告——
Warning: Truncated incorrect DOUBLE value: '512121500B'
——但不知道为什么。
MySQL 表 dr_snapshot 如下所示:
PremiseID char(10) Primary Key
cycle SMALLINT(6)
last_read DATETIME
reading INTEGER
DeviceID INTEGER
我想通过 PremiseID 删除许多行。这是一个特别的:'512121500B'。
这是我的由 PremiseID 删除的 Python 函数:
def delDrSnapRow(premiseID, db):
sql_cmd = " ".join([
"delete ",
"from dr_snapshot ",
"where PremiseID = " + str(premiseID) + " ; "])
del_cur = db.cursor()
rc = del_cur.execute(sql_cmd)
del_cur.close()
return rc
PremiseID 是一个字符串,而不是双精度。我在这里想念什么?
非常感谢。
编辑
在修改我的删除过程以使用 try: .. 之后,我没有看到警告。我相信我没有看到警告,因为我没有看到警告显示——print(e)
在除外部分。
我得出的结论是 try: except 以某种方式消除了错误。
def delDrSnapRow(premiseID, db):
sql_cmd = " ".join([
"delete ",
"from dr_snapshot ",
"where PremiseID = " + "'" + premiseID + "' ; "])
del_cur = db.cursor()
try:
rc = del_cur.execute(sql_cmd)
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0], e.args[1])
except MySQLdb.Warning, e:
print(e)
rc = del_cur.execute(sql_cmd)
del_cur.close()
return rc