Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencetak Pertanyaan SQL dalam SQLAlchemy dengan Nilai Sebenar?

Bagaimana untuk Mencetak Pertanyaan SQL dalam SQLAlchemy dengan Nilai Sebenar?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-18 13:24:30936semak imbas

How to Print SQL Queries in SQLAlchemy with Actual Values?

Mendapatkan kembali Pertanyaan SQL dalam SQLAlchemy dengan Nilai Sebenar

Apabila menggunakan SQLAlchemy, ia boleh berguna untuk mencetak pertanyaan SQL sebenar yang sedang dilaksanakan, termasuk nilai khusus yang digunakan, bukannya parameter ikatan abstrak.

Begini cara untuk mencapai ini dalam SQLAlchemy:

<code class="python">print(str(statement))</code>

Pendekatan mudah ini berfungsi untuk kedua-dua objek ORM Query dan pilih() atau jenis pernyataan lain. Jika anda ingin mendapatkan pertanyaan seperti yang dikompilasi kepada dialek atau enjin tertentu, anda boleh menghantar argumen yang sesuai untuk menyusun():

<code class="python">print(statement.compile(someengine))
print(statement.compile(dialect=postgresql.dialect()))</code>

Apabila menggunakan objek ORM Query, mula-mula akses pengakses .statement ke dapatkan kaedah compile():

<code class="python">statement = query.statement
print(statement.compile(someengine))</code>

Dalam kes di mana anda perlu menyelaraskan parameter terikat ke dalam rentetan akhir, SQLAlchemy mempunyai sokongan terhad untuk ini. Anda boleh menggunakan bendera 'literal_binds' apabila memanggil compile():

<code class="python">print(s.compile(compile_kwargs={"literal_binds": True}))</code>

Walau bagaimanapun, ini hanya berfungsi untuk jenis mudah seperti integer dan rentetan. Untuk jenis tersuai, anda perlu menggunakan TypeDecorator dengan kaedah TypeDecorator.process_literal_param untuk menyediakan pemformatan tersuai:

<code class="python">print(
    tab.select().where(tab.c.x > 5).compile(
        compile_kwargs={"literal_binds": True})
)</code>

Pendekatan ini membenarkan pemaparan sebaris jenis tersuai dalam rentetan pertanyaan SQL yang terhasil.

Atas ialah kandungan terperinci Bagaimana untuk Mencetak Pertanyaan SQL dalam SQLAlchemy dengan Nilai Sebenar?. 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