sql >> Database teknologi >  >> RDS >> Mysql

MySQLdb - Tjek om rækken findes Python

  1. Først og fremmest har du en forkert syntaks i din kode. Python har ikke en try...catch blok. Det har try...except blok, der bruges sådan her:
try:
    # something here
except:
    # something here
  1. MySQL returnerer ikke en fejl, når du bruger SELECT kommando. Der er dog to forskellige måder, du kan finde ud af, om det returnerede noget eller ej.

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

En anden måde at gøre dette på ville være at hente erklæringen og kontrollere, om den er tom:

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

Dette er mit første svar, så jeg ved ikke hvordan jeg skal style koden i svaret ordentligt, det virker også rodet på grund af det. Undskyld for det.

Jeg bruger også Python 3 og pymysql, så der kan være en syntaksfejl, men jeg har forsøgt at skrive koden i henhold til python 2.7 ud fra hvad jeg kunne huske om det.

REDIGER (1/5/2020)

Tak til @Arishta for at påpege, at den første metode kræver, at du henter alle rækker, før du bruger row_count. dvs. tilføjelse af cursor.fetchall() før 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")

Brug cursor.fetchone() hvis du kun bekymrer dig om posten eksisterer eller ej.



  1. Hvad er LIKE Logical Operator i SQL Server - SQL Server / TSQL Tutorial Del 123

  2. Ufanget fejl:Kald til udefineret funktion mysql_connect()

  3. Importerer MaxMinds GeoLite2 til MySQL

  4. Fuldtekstsøgninger i MySQL:The Good, the Bad and the Ugly