Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memaparkan Pertanyaan SQL Sebenar dalam SQLAlchemy?

Bagaimana untuk Memaparkan Pertanyaan SQL Sebenar dalam SQLAlchemy?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-18 13:20:03959semak imbas

How to Display Actual SQL Queries in SQLAlchemy?

Mencetak Pertanyaan SQL Sebenar dalam SQLAlchemy

Dalam SQLAlchemy, adalah penting untuk memahami cara memaparkan SQL mentah yang sepadan dengan operasi pangkalan data anda . Ini penting untuk menyelesaikan masalah, menyahpepijat dan mengoptimumkan komunikasi pangkalan data aplikasi anda.

Pendekatan Umum

Dalam kebanyakan kes, anda boleh melihat perwakilan rentetan SQL bagi pernyataan dengan mudah atau pertanyaan dengan:

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

Ini terpakai pada Pertanyaan ORM dan ungkapan pilih() mentah.

Menyusun kepada Dialek Tertentu

Jika anda perlu melihat SQL yang disusun untuk dialek atau enjin tertentu, anda boleh menggunakan kaedah compile():

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

atau tanpa enjin:

<code class="python">from sqlalchemy.dialects import postgresql
print(statement.compile(dialect=postgresql.dialect()))</code>

Inlining Parameter Terikat

Tingkah laku lalai dalam SQLAlchemy ialah menggunakan parameter ikatan dalam rentetan SQL, memastikan keselamatan dengan menghalang serangan suntikan SQL. Untuk memintas parameter terikat dan nilai sebenar sebaris, gunakan bendera literal_binds dalam compile_kwargs:

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

Untuk jenis tersuai yang tidak disokong oleh pendekatan ini, laksanakan TypeDecorator dengan kaedah process_literal_param untuk memastikan pemaparan sebaris:

<code class="python">class MyFancyType(TypeDecorator):
    def process_literal_param(self, value, dialect):
        return "my_fancy_formatting(%s)" % value

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

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