sql >> Databasteknik >  >> RDS >> Mysql

MySQLdb - Kontrollera om raden finns Python

  1. För det första har du fel syntax i koden. Python har ingen try...catch blockera. Den har try...except block som används så här:
try:
    # something here
except:
    # something here
  1. MySQL returnerar inget fel när du använder SELECT kommando. Det finns dock två olika sätt du kan ta reda på om det returnerade något eller inte.

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

Ett annat sätt att göra detta är att hämta uttalandet och kontrollera om det är tomt:

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

Detta är mitt första svar, så jag vet inte hur jag ska formatera koden i svaret ordentligt, det verkar också rörigt på grund av det. Ursäkta för det.

Jag använder också Python 3 och pymysql, så det kan vara något syntaxfel men jag har försökt skriva koden enligt python 2.7 från vad jag kunde komma ihåg om det.

REDIGERA (5/1/2020)

Tack till @Arishta för att du påpekade att den första metoden kräver att du hämtar alla rader innan du använder row_count. dvs lägga till cursor.fetchall() före 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")

Använd cursor.fetchone() om du bara bryr dig om posten finns eller inte.



  1. MySQL:Leta efter samma sträng i flera kolumner

  2. Finns det ett textbaserat mysql-gränssnitt?

  3. MySQL dynamisk pivottabell

  4. Symfony3 - SQLSTATE[HY000] [2002] Ingen sådan fil eller katalog