繁体   English   中英

如果尝试打印空字符串,如何执行except块

[英]How to execute the except block if try prints an empty string

我想在 SQL 表中搜索一条记录,如果找不到该记录,我想打印一条错误消息。 我正在使用try/except块来做到这一点。 但是,没有显示错误消息。 我认为正在发生的是,当 SQL 未能找到该记录时,它不会引发错误。 它只会打印一个空行。 因此,除了块没有被执行,因为 python 认为try块已成功执行。

代码:

import mysql.connector as sql

mydb = sql.connect(host = "localhost", user = "root", passwd = "password", database = "menagerie")

mycursor = mydb.cursor()

try:
    mycursor.execute("SELECT * FROM pet  where name='Fluff'")
    data = mycursor.fetchall()
    for i in data:
        print(i)

except:
    print("Not found")

这里,在表pet中,没有名称为Fluff的记录。 所以,我想打印“未找到”消息。 但是, python 打印一个空字符串。

如果有任何方法可以解决问题,无论是使用 try/except 还是任何其他方法,请务必告诉我。 谢谢。

当没有满足给定条件的记录(在您的情况下name='Fluff' )时, mysql 返回一个空集并且不会产生错误。

mysql> select * from job;
+-----+-------------+--------+
| Eno | designation | salary |
+-----+-------------+--------+
|   1 | PGT         |  21000 |
|   3 | TGT         |  19000 |
|   4 | PGT         |  23000 |
|   5 | Primary     |  12000 |
+-----+-------------+--------+
4 rows in set (0.02 sec)

mysql> select * from job where Eno=7;
Empty set (0.00 sec)

您可以检查data是否为空列表,而不是使用try and except

mycursor.execute("SELECT * FROM pet  where name='Fluff'")
data = mycursor.fetchall()
if bool(data)==False:
      print("Not found")
else:     
      for i in data:
           print(i)

你必须包括你想要的例外,例外弹出:

try:
    mycursor.execute("SELECT * FROM pet  where name='Fluff'")
    data = mycursor.fetchall()
    for i in data:
        print(i)

except sql.Error as err:
    print("Error Code: ", err)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM