Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQLdb - Sprawdź, czy wiersz istnieje Python

  1. Przede wszystkim masz złą składnię w kodzie. Python nie ma try...catch blok. Ma try...except blok używany w ten sposób:
try:
    # something here
except:
    # something here
  1. MySQL nie zwraca błędu, gdy używasz SELECT Komenda. Istnieją jednak dwa różne sposoby sprawdzenia, czy coś zwróciło, czy nie.

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

Innym sposobem, aby to zrobić, byłoby pobranie instrukcji i sprawdzenie, czy jest ona pusta:

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

To jest moja pierwsza odpowiedź, więc nie wiem, jak prawidłowo wystylizować kod w odpowiedzi, z tego powodu wydaje się to również nieuporządkowane. Przepraszamy za to.

Używam również Pythona 3 i pymysql, więc może być jakiś błąd składni, ale próbowałem napisać kod zgodnie z python 2.7 z tego, co pamiętałem.

EDYTUJ (5/1/2020)

Podziękowania dla @Arishta za wskazanie, że pierwsza metoda będzie wymagała pobrania wszystkich wierszy przed użyciem row_count. czyli dodanie cursor.fetchall() przed 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")

Użyj cursor.fetchone() jeśli zależy Ci tylko na tym, czy rekord istnieje, czy nie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP - Ustaw klucz tablicy mojego zapytania jako identyfikator

  2. mysql:odwoływanie się do kolumn po numerach

  3. Jak zamawiać wyniki MySQL VARCHAR

  4. edytowanie obrazu przy użyciu typu pliku wejściowego

  5. com.mysql.jdbc.exceptions.MySQLSyntaxErrorException podczas korzystania z PreparedStatement