- Primeiro de tudo, você tem uma sintaxe errada em seu código. Python não tem um
try...catch
quadra. Temtry...except
bloco que é usado assim:
try:
# something here
except:
# something here
- O MySQL não retorna um erro quando você usa
SELECT
comando. No entanto, existem duas maneiras diferentes de descobrir se ele retornou algo ou não.
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"
PÍTON 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")
Outra maneira de fazer isso seria buscar a instrução e verificar se ela está vazia:
# execute statement same as above
msg = cursor.fetchone()
# check if it is empty and print error
if not msg:
print 'It does not exist'
Também uso Python 3 e pymysql, então pode haver algum erro de sintaxe, mas tentei escrever o código de acordo com o python 2.7 do que eu conseguia lembrar.
EDITAR (01/05/2020)
Obrigado a @Arishta por apontar que o primeiro método exigirá que você busque todas as linhas antes de usar row_count. ou seja, adicionando
cursor.fetchall()
antes do 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")
Use o
cursor.fetchone()
se você só se importa se o registro existe ou não.