- На първо място, имате грешен синтаксис в кода си. Python няма
try...catch
блок. Имаtry...except
блок, който се използва по следния начин:
try:
# something here
except:
# something here
- MySQL не връща грешка, когато използвате
SELECT
команда. Има обаче два различни начина, по които можете да разберете дали е върнало нещо или не.
PYTHON 2.7
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print "number of affected rows: {}".format(row_count)
if row_count == 0:
print "It Does Not Exist"
PYTHON 3+
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print ("number of affected rows: {}".format(row_count))
if row_count == 0:
print ("It Does Not Exist")
Друг начин да направите това е да извлечете изявлението и да проверите дали е празно:
# execute statement same as above
msg = cursor.fetchone()
# check if it is empty and print error
if not msg:
print 'It does not exist'
Това е първият ми отговор, така че не знам как да стилизирам правилно кода в отговора, също така изглежда объркан поради това. Съжалявам за това.
Също така използвам Python 3 и pymysql, така че може да има някаква синтактична грешка, но се опитах да напиша кода според python 2.7 от това, което можах да си спомня за него.
РЕДАКТИРАНЕ (01.05.2020 г.)
Благодаря на @Arishta, че посочи, че първият метод ще изисква от вас да извлечете всички редове, преди да използвате row_count. т.е. добавяне на cursor.fetchall()
преди row_count = cursor.rowcount
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# Add THIS LINE
results = cursor.fetchall()
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print("number of affected rows: {}".format(row_count))
if row_count == 0:
print("It Does Not Exist")
Използвайте cursor.fetchone()
ако ви интересува само дали записът съществува или не.