Memerangkap Amaran MySQL dalam Python
Apabila melaksanakan pertanyaan menggunakan MySQL dalam Python, ada kemungkinan untuk menghadapi amaran seperti "Data dipotong untuk lajur ' xxx'". Untuk mengendalikan amaran ini, seseorang mungkin cuba menggunakan kod berikut:
<code class="python">import MySQLdb try: cursor.execute(some_statement) # code steps always here: No Warning is trapped # by the code below except MySQLdb.Warning, e: # handle warnings, if the cursor you're using raises them except Warning, e: # handle warnings, if the cursor you're using raises them</code>
Walau bagaimanapun, kod ini mungkin tidak berfungsi seperti yang dimaksudkan. Ini kerana amaran dalam MySQL tidak dinaikkan sebagai pengecualian secara lalai.
Untuk mengendalikan amaran dengan berkesan, seseorang perlu mengkonfigurasi perkara yang perlu dilakukan dengannya menggunakan modul amaran Python. Berikut ialah versi kod yang diubah suai yang menunjukkan pendekatan ini:
<code class="python">import warnings import MySQLdb warnings.filterwarnings('error', category=MySQLdb.Warning) try: cursor.execute(some_statement) # code steps now execute without catching warnings except MySQLdb.Warning as e: # warnings are now raised as exceptions and can be handled here except MySQLdb.Error as e: # handle other errors as usual</code>
Dalam kod ini, kami menggunakan warnings.filterwarnings('error', category=MySQLdb.Warning) untuk mengkonfigurasi modul amaran untuk merawat MySQLdb. Amaran amaran sebagai ralat. Ini membolehkan kami menangkap amaran ini menggunakan blok cuba/kecuali kami.
Sebagai alternatif, anda boleh menapis amaran mengikut kriteria lain, seperti rentetan mesej atau modul, memberikan anda kawalan yang lebih besar terhadap cara amaran dikendalikan.
Atas ialah kandungan terperinci Bagaimana untuk Memerangkap Amaran MySQL dengan Berkesan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!