Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQLdb - Prüfen, ob Zeile vorhanden ist Python

  1. Erstens haben Sie eine falsche Syntax in Ihrem Code. Python hat kein try...catch Block. Es hat try...except Block, der wie folgt verwendet wird:
try:
    # something here
except:
    # something here
  1. MySQL gibt keinen Fehler zurück, wenn Sie SELECT verwenden Befehl. Es gibt jedoch zwei verschiedene Möglichkeiten, um herauszufinden, ob etwas zurückgegeben wurde oder nicht.

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")

Eine andere Möglichkeit wäre, die Anweisung abzurufen und zu prüfen, ob sie leer ist:

# execute statement same as above  
msg = cursor.fetchone()  
# check if it is empty and print error
if not msg:
    print 'It does not exist'

Dies ist meine erste Antwort, daher weiß ich nicht, wie ich den Code in der Antwort richtig formatieren soll, deshalb scheint es auch chaotisch zu sein. Entschuldigung dafür.

Außerdem verwende ich Python 3 und Pymysql, daher kann es einige Syntaxfehler geben, aber ich habe versucht, den Code gemäß Python 2.7 zu schreiben, soweit ich mich daran erinnern konnte.

BEARBEITEN (01.05.2020)

Vielen Dank an @Arishta für den Hinweis, dass Sie bei der ersten Methode alle Zeilen abrufen müssen, bevor Sie row_count verwenden. d.h. Hinzufügen von cursor.fetchall() vor 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")

Verwenden Sie cursor.fetchone() ob es Sie nur interessiert, ob der Datensatz existiert oder nicht.