Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Parameter Dinamakan dengan `connection.execute` SQLAlchemy untuk Pertanyaan SQL yang Lebih Selamat dan Boleh Dibaca?

Bagaimanakah Saya Boleh Menggunakan Parameter Dinamakan dengan `connection.execute` SQLAlchemy untuk Pertanyaan SQL yang Lebih Selamat dan Boleh Dibaca?

Susan Sarandon
Lepaskan: 2024-12-31 19:20:14
asal
996 orang telah melayarinya

How Can I Use Named Parameters with SQLAlchemy's `connection.execute` for Safer and More Readable SQL Queries?

Menggunakan Parameter Dinamakan dengan SQLAlchemy connection.execute

SQLAlchemy's connection.execute kaedah membolehkan pelaksanaan pertanyaan SQL sambil mengubah keputusan menjadi tatasusunan daripada peta. Pada mulanya dilaksanakan dengan pemformatan rentetan untuk memasukkan parameter dalam pertanyaan, kaedah ini boleh dipertingkatkan untuk menggunakan parameter yang dinamakan untuk kecekapan dan keselamatan yang lebih baik.

Mengubahsuai Prosedur

Untuk mengubah suai kod untuk menerima parameter bernama, langkah berikut boleh diambil:

  1. Gunakan Fungsi text() SQLAlchemy untuk menghuraikan rentetan SQL:

    sql = text("SELECT users.fullname || ', ' || addresses.email_address AS title FROM users, addresses WHERE users.id = addresses.user_id AND users.name BETWEEN :x AND :y AND (addresses.email_address LIKE :e1 OR addresses.email_address LIKE :e2)")
    Salin selepas log masuk
  2. Lepaskan parameter bernama ke fungsi execute():

    conn.execute(sql, {"x": "m", "y": "z", "e1": "%@aol.com", "e2": "%@msn.com"})
    Salin selepas log masuk

Kebaikan Dinamakan Parameter

Menggunakan parameter bernama menawarkan beberapa faedah:

  • Mengurangkan Risiko Suntikan SQL: Dengan menggunakan parameter yang dinamakan, pembangun boleh mengelakkan potensi risiko yang berkaitan dengan pemformatan rentetan, yang boleh membawa kepada suntikan SQL kelemahan.
  • Kebolehbacaan Kod yang Dipertingkat: Parameter yang dinamakan menjadikan kod lebih mudah dibaca dan lebih mudah difahami, terutamanya apabila menangani pertanyaan kompleks yang melibatkan berbilang parameter.

Pendekatan Alternatif

Sebagai alternatif, seseorang boleh menentukan fungsi untuk membungkus kefungsian laksana dan menerima parameter bernama sebagai kamus:

def sql_to_data(sql, values):
    result = []
    connection = engine.connect()
    try:
        rows = connection.execute(sql, values)
        ...
    finally:
        connection.close()
    return result
Salin selepas log masuk

Dengan pendekatan ini, pertanyaan boleh dilaksanakan dengan:

sql = 'SELECT ...'
data = {'user_id': 3}
results = sql_to_data(sql, data)
Salin selepas log masuk

Kaedah ini membolehkan penggunaan nama parameter sambil mengekalkan fungsi teras kod asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Parameter Dinamakan dengan `connection.execute` SQLAlchemy untuk Pertanyaan SQL yang Lebih Selamat dan Boleh Dibaca?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan