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

Bagaimana untuk Mendapatkan Pertanyaan SQL Sebenar dalam SQLAlchemy?

Patricia Arquette
Patricia Arquetteasal
2024-10-18 13:26:02778semak imbas

How to Obtain the True SQL Query in SQLAlchemy?

SQLAlchemy: Membongkar Pertanyaan Sebenar

Apabila bekerja dengan SQLAlchemy, ia boleh menjadi berharga untuk memeriksa pertanyaan SQL sebenar yang sedang dilaksanakan. Walaupun SQLAlchemy biasanya bergantung pada parameter bind, terdapat cara untuk menjana pernyataan SQL yang sepadan, termasuk nilai sebenar.

Penyelesaian Umum

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

<code class="python">import sqlalchemy as sa
print(str(statement))</code>

Ini berfungsi untuk kedua-dua Pertanyaan ORM dan pilih() atau pernyataan lain. Jika perlu, anda boleh menyusun pernyataan itu kepada dialek atau enjin tertentu:

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

atau tanpa menyatakan enjin:

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

Parameter Terikat Sebaris

Untuk memasukkan nilai sebenar dan bukannya parameter ikatan dalam rentetan SQL, SQLAlchemy menyediakan sokongan terhad melalui bendera 'literal_binds' dalam compile_kwargs:

<code class="python">from sqlalchemy import table, column, select
t = table('t', column('x'))
s = select([t]).where(t.c.x == 5)
print(s.compile(compile_kwargs={"literal_binds": True}))</code>

Walau bagaimanapun, pendekatan ini hanya berfungsi untuk jenis asas dan mungkin tidak mengendalikan parameter ikatan tanpa nilai yang telah ditetapkan. Untuk jenis tersuai, anda boleh melaksanakan TypeDecorator dengan kaedah process_literal_param:

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

Ini membolehkan anda menyesuaikan pemaparan nilai berdasarkan keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan 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