- Allereerst heb je een verkeerde syntaxis in je code. Python heeft geen
try...catch
blok. Het heefttry...except
blok dat als volgt wordt gebruikt:
try:
# something here
except:
# something here
- MySQL retourneert geen fout wanneer u
SELECT
gebruikt opdracht. Er zijn echter twee verschillende manieren om erachter te komen of het iets heeft geretourneerd of niet.
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")
Een andere manier om dit te doen is door het statement op te halen en te controleren of het leeg is:
# execute statement same as above
msg = cursor.fetchone()
# check if it is empty and print error
if not msg:
print 'It does not exist'
Dit is mijn eerste antwoord, dus ik weet niet hoe ik de code op de juiste manier in het antwoord moet stylen, daarom lijkt het ook rommelig. Sorry daarvoor.
Ik gebruik ook Python 3 en pymysql, dus er kan een syntaxisfout zijn, maar ik heb geprobeerd de code te schrijven volgens python 2.7 van wat ik me ervan kon herinneren.
BEWERKEN (1-5-2020)
Met dank aan @Arishta voor het erop wijzen dat je bij de eerste methode alle rijen moet ophalen voordat je row_count gebruikt. d.w.z. het toevoegen van cursor.fetchall()
voor de 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")
Gebruik de cursor.fetchone()
of het je alleen kan schelen of het record bestaat of niet.