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

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

我想在 SQL table 中搜索一条记录,如果找不到该记录,我想打印一条错误消息。我正在使用 try/except 块来执行此操作。但是,未显示错误消息。我认为正在发生的事情是,当 SQL 找不到该记录时,它不会引发错误。它只会打印一个空行。因此,except 块未被执行,因为 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")

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

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

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

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)