- Především máte ve svém kódu špatnou syntaxi. Python nemá
try...catch
blok. Mátry...except
blok, který se používá takto:
try:
# something here
except:
# something here
- MySQL nevrací chybu, když použijete
SELECT
příkaz. Existují však dva různé způsoby, jak zjistit, zda něco vrátilo nebo ne.
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")
Dalším způsobem, jak to udělat, by bylo načíst příkaz a zkontrolovat, zda je prázdný:
# execute statement same as above
msg = cursor.fetchone()
# check if it is empty and print error
if not msg:
print 'It does not exist'
Toto je moje první odpověď, takže nevím, jak správně stylizovat kód v odpovědi, také mi to kvůli tomu připadá zmatené. Omlouváme se za to.
Také používám Python 3 a pymysql, takže může dojít k nějaké syntaktické chybě, ale pokusil jsem se napsat kód podle pythonu 2.7 z toho, co jsem si o něm pamatoval.
UPRAVIT (1. 5. 2020)
Děkujeme @Arishta za upozornění, že první metoda bude vyžadovat, abyste před použitím row_count načetli všechny řádky. tj. přidání cursor.fetchall()
před 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")
Použijte cursor.fetchone()
pokud vás zajímá pouze to, zda záznam existuje nebo ne.