sql >> Databáze >  >> RDS >> Mysql

MySQLdb - Zkontrolujte, zda řádek existuje Python

  1. 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
  1. 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.



  1. Rozdíl mezi datem a časovým razítkem na serveru SQL?

  2. Jak povolím protokol pomalých dotazů MySQL?

  3. Jak vložit javascript do databáze mysql?

  4. mysql dotaz na propojený seznam