Mysql - 在Python中将查询结果与String进行比较

时间:2017-03-22 19:06:20

标签: python mysql-python

我想检查查询返回的电子邮件是否为空。我使用以下代码:

query = "select email from u_code where code = '"+code+"'"
cursor.execute(query)
result_set = cursor.fetchall()

length = cursor.rowcount
if (length==1):
   print ' result: ' + str(result_set[0]) + ' OK'
   print ' length of result: ' + str(len(result_set[0]))

   if (result_set[0] == ''):
       print("empty email")
       result = 1;
   else:
       print("email taken")
       result = 0


print "result: " + str(result)

输出错误。它应该返回1,因为电子邮件字段为空

 result: (u'',) OK
 length of result: 1
 email taken
 result: 0

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

result_set是一个数组,您可以访问第一个元组: result_set[0] => (u'',)确实长度为1.

访问第一个元素(例如通过result_set[0][0])将为您提供实际需要的空字符串。

答案 1 :(得分:1)

.fetchall()返回元组列表。所以你的病情永远不会得到满足。

您可以这样做:

if (result_set[0][0] == ''):
    print("empty email")
    result = 1;
else:
    print("email taken")
    result = 0

或者更简单地使用.fetchone()

result_set = cursor.fetchone()

if (result_set[0] == ''):
    print("empty email")
    result = 1;
else:
    print("email taken")
    result = 0

此外,您应该像这样查询您的数据库,以避免SQL注入攻击的可能性:

query = "select email from u_code where code = %s"
cursor.execute(query,(code,))

答案 2 :(得分:0)

为了检查表中的现有值,我建议使用COUNT查询

<meta charset="UTF-8">