Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQLdb - Periksa apakah ada baris Python

  1. Pertama-tama Anda memiliki sintaks yang salah dalam kode Anda. Python tidak memiliki try...catch memblokir. Ini memiliki try...except blok yang digunakan seperti ini:
try:
    # something here
except:
    # something here
  1. MySQL tidak mengembalikan kesalahan saat Anda menggunakan SELECT memerintah. Namun ada dua cara berbeda untuk mengetahui apakah itu mengembalikan sesuatu atau tidak.

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

Cara lain untuk melakukannya adalah dengan mengambil pernyataan dan memeriksa apakah itu kosong:

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

Ini adalah jawaban pertama saya, jadi saya tidak tahu bagaimana gaya kode dalam jawaban dengan benar, itu juga tampak berantakan karena itu. Maaf untuk itu.

Saya juga menggunakan Python 3 dan pymysql, jadi mungkin ada beberapa kesalahan sintaks tetapi saya telah mencoba untuk menulis kode sesuai dengan python 2.7 dari apa yang saya ingat.

EDIT (5/1/2020)

Terima kasih kepada @Arishta karena menunjukkan bahwa metode pertama mengharuskan Anda mengambil semua baris sebelum menggunakan row_count. yaitu menambahkan cursor.fetchall() sebelum 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")

Gunakan cursor.fetchone() jika Anda hanya peduli apakah catatan itu ada atau tidak.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql secara otomatis melemparkan string ke integer

  2. masalah dalam banyak ke banyak hubungan

  3. Pengaturan ukuran halaman Innodb

  4. cara cross-dbms untuk memeriksa apakah string numerik

  5. C# MySql BUAT PENGGUNA