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

Bagaimana cara memeriksa apakah ada catatan dengan Python MySQdb

Saya percaya kueri "apakah itu ada" yang paling efisien adalah dengan melakukan count :

sqlq = "SELECT COUNT(1) FROM settings WHERE status = '1'"
xcnx.execute(sqlq)
if xcnx.fetchone()[0]:
    # exists

Alih-alih meminta database untuk melakukan operasi penghitungan apa pun pada bidang atau baris, Anda hanya memintanya untuk mengembalikan 1 atau 0 jika hasilnya menghasilkan kecocokan. Ini jauh lebih efisien daripada mengembalikan catatan aktual dan menghitung jumlah sisi klien karena menghemat serialisasi dan deserialisasi di kedua sisi, dan transfer data.

In [22]: c.execute("select count(1) from settings where status = 1")
Out[22]: 1L  # rows

In [23]: c.fetchone()[0]
Out[23]: 1L  # count found a match

In [24]: c.execute("select count(1) from settings where status = 2")
Out[24]: 1L  # rows

In [25]: c.fetchone()[0]
Out[25]: 0L  # count did not find a match

count(*) akan sama dengan count(1) . Dalam kasus Anda karena Anda membuat tabel baru, itu akan menunjukkan 1 hasil. Jika Anda memiliki 10.000 kecocokan, itu akan menjadi 10.000. Tetapi yang Anda pedulikan dalam pengujian Anda adalah apakah BUKAN 0, sehingga Anda dapat melakukan uji kebenaran bool.

Perbarui

Sebenarnya, lebih cepat hanya menggunakan jumlah baris, dan bahkan tidak mengambil hasil:

In [15]: if c.execute("select (1) from settings where status = 1 limit 1"): 
            print True
True

In [16]: if c.execute("select (1) from settings where status = 10 limit 1"): 
            print True

In [17]: 

Ini juga bagaimana ORM Django melakukan queryObject.exists() .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cara Mengkonversi antara Desimal dan Heksadesimal di MySQL

  2. Laravel Eloquent membandingkan tanggal dari bidang datetime

  3. Komentar bersarang di PHP &MySQL

  4. Array Multi-Dimensi dari pencocokan kolom mysql

  5. Kegagalan Basis Data untuk Situs WordPress