Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Melihat Pertanyaan Sebenar yang Dilaksanakan oleh MySQLdb?

Bagaimana untuk Melihat Pertanyaan Sebenar yang Dilaksanakan oleh MySQLdb?

DDD
DDDasal
2024-11-04 14:01:01238semak imbas

How to View the Actual Query Executed by MySQLdb?

Cara Melihat Pertanyaan Sebenar yang Dilaksanakan oleh MySQLdb

Apabila menyahpepijat pertanyaan pangkalan data dalam Python menggunakan MySQLdb, adalah berguna untuk memeriksa dengan tepat pertanyaan sedang dilaksanakan, terutamanya selepas parameterisasi. Ini boleh membantu dalam mengenal pasti sebarang ralat atau percanggahan antara pertanyaan yang dimaksudkan dan pelaksanaannya yang sebenar.

Mengakses Pertanyaan yang Dilaksanakan

Dalam MySQLdb versi 1.2.2, objek Kursor tidak menyediakan kaedah Cursor.info() eksplisit untuk mendapatkan semula maklumat pertanyaan. Walau bagaimanapun, terdapat atribut yang dipanggil cursor._last_executed yang memegang rentetan pertanyaan yang terakhir dilaksanakan. Atribut ini boleh diakses walaupun apabila pengecualian berlaku semasa pelaksanaan pertanyaan.

Contoh Penggunaan

Untuk menggunakan atribut ini untuk tujuan nyahpepijat, anda boleh mengaksesnya selepas melaksanakan pertanyaan sebagai berikut:

<code class="python">import MySQLdb

db = MySQLdb.connect(... )
cursor = db.cursor()

# Execute a query with parameters
query = "SELECT * FROM users WHERE name = %s"
cursor.execute(query, ("John", ))

# Print the actual query executed
print(cursor._last_executed)</code>

Faedah

Menggunakan kursor._last_executed menawarkan beberapa faedah berbanding teknik penyahpepijatan lain seperti pemprofilan atau pengelogan pertanyaan MySQL:

  • Ia lebih mudah untuk dilaksanakan dan digunakan dalam persekitaran pengeluaran.
  • Ia tidak mempunyai kesan prestasi yang ketara.
  • Ia menyediakan akses segera kepada pertanyaan yang dilaksanakan tanpa memerlukan korelasi atau log tambahan menghuraikan.

Atas ialah kandungan terperinci Bagaimana untuk Melihat Pertanyaan Sebenar yang Dilaksanakan oleh MySQLdb?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn