TypeError:%支持的操作数类型:'long'和'str'

时间:2014-02-17 20:37:45

标签: python-2.7 mysql-python typeerror

使用此代码:

current_time=time.localtime()
time_now=time.strftime('%H:%M:%S',current_time)

cursor.execute("Select * from SUBSCRIPTION_DETAILS where Alert_time='%s'") % time_now

我收到错误:

unsupported operand type(s) for %:long and str
type的{​​p> Alert_time是varchar

1 个答案:

答案 0 :(得分:2)

您错放了%

您现在正在做的是:

cursor.execute("[snip]") % time_now

因此,您对time_now

的结果应用了cursor.execute

你想要的是使用带有字符串的%,如下所示:

cursor.execute("[snip]" % time_now)

但是不要这样做,你应该使用:

cursor.execute("Select * from SUBSCRIPTION_DETAILS where Alert_time=%s", (time_now,))

请注意,在这里,我们将time_now作为第二个参数传递,而不是使用%运算符。这将确保正确清理查询,以防止SQL注入攻击。

需要(稍微丑陋)尾随,以确保第二个参数是一个元组。