flake8 Menandakan Perbandingan Boolean dalam Klausa Penapis
Apabila cuba menapis hasil pertanyaan berdasarkan perbandingan boolean dalam SQL, pembangun mungkin menghadapi amaran daripada flake8 mengenai penggunaan "==". Walaupun secara amnya disyorkan untuk menggunakan "jika cond is False:" atau "if not cond:" untuk perbandingan boolean di tempat lain, ini tidak terpakai untuk menapis klausa dalam SQLAlchemy.
Dalam contoh yang disediakan, medan boolean (usang) dalam jadual pangkalan data digunakan untuk menentukan kiraan kes ujian tidak lapuk. Kod menggunakan TestCase.obsoleted == False dalam klausa penapis.
caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count()<br>< ;/pre></p> <p>Walau bagaimanapun, flake8 melaporkan amaran "E712: Comparison to False hendaklah 'jika cond is False:' atau 'if not cond:'."</p> <p>Untuk menangani amaran ini , pembangun mungkin tergoda untuk menukar kod untuk menggunakan pengendali "adalah Palsu" atau "bukan":</p> <p><pre class="brush:php;toolbar:false">caseNum = session.query(TestCase).filter(TestCase.obsoleted is False). count()<br>
atau
caseNum = session.query(TestCase).filter(bukan TestCase.usang).count()<br>
Malangnya, pengubahsuaian ini menghasilkan hasil yang salah, mengembalikan 0 dan bukannya kiraan yang dijangkakan. Ini kerana klausa penapis dalam SQLAlchemy tidak menyokong pengendali "is" atau "is not".
Untuk menyelesaikan isu ini tanpa melumpuhkan flake8, pembangun boleh menggunakan ulasan # noqa pada baris yang menyinggung:
caseNum = session.query(TestCase).filter(TestCase.obsoleted == False) # noqa: E712<br>
Sebagai alternatif, sqlalchemy.sql.expression Fungsi .false boleh digunakan:
from sqlalchemy.sql.expression import false</p> <p>caseNum = session.query(TestCase).filter(TestCase.obsoleted == false() )<br>
di mana false() mengembalikan nilai yang sesuai untuk dialek SQL yang digunakan.
Atas ialah kandungan terperinci Mengapakah `flake8` Membenderakan Perbandingan Boolean dalam Klausa Penapis SQLAlchemy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!