Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQLdb - Проверете дали редът съществува Python

  1. На първо място, имате грешен синтаксис в кода си. Python няма try...catch блок. Има try...except блок, който се използва по следния начин:
try:
    # something here
except:
    # something here
  1. MySQL не връща грешка, когато използвате SELECT команда. Има обаче два различни начина, по които можете да разберете дали е върнало нещо или не.

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

Друг начин да направите това е да извлечете изявлението и да проверите дали е празно:

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

Това е първият ми отговор, така че не знам как да стилизирам правилно кода в отговора, също така изглежда объркан поради това. Съжалявам за това.

Също така използвам Python 3 и pymysql, така че може да има някаква синтактична грешка, но се опитах да напиша кода според python 2.7 от това, което можах да си спомня за него.

РЕДАКТИРАНЕ (01.05.2020 г.)

Благодаря на @Arishta, че посочи, че първият метод ще изисква от вас да извлечете всички редове, преди да използвате row_count. т.е. добавяне на cursor.fetchall() преди 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")

Използвайте cursor.fetchone() ако ви интересува само дали записът съществува или не.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xampp; Apache Port 80 зает

  2. След като инсталирам най-новата версия на MySQL, получавам грешка:#1366 - Неправилна стойност на цяло число:'' за колона 'group_id' на ред 1

  3. Защо Magento не успява да спаси клиент след генериране на идентификационен номер?

  4. Как да актуализирате стойността на външния ключ в базата данни на mysql

  5. Средна разлика във времето в mysql