Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Connection.execute() SQLAlchemy dengan Selamat dengan Pernyataan SQL Berparameter?

Bagaimanakah Saya Boleh Menggunakan Connection.execute() SQLAlchemy dengan Selamat dengan Pernyataan SQL Berparameter?

DDD
DDDasal
2025-01-03 12:35:39218semak imbas

How Can I Securely Use SQLAlchemy's Connection.execute() with Parameterized SQL Statements?

SQLAlchemy Connection.execute() dengan Pernyataan SQL Parametrized

Kaedah connection.execute() SQLAlchemy membenarkan pembangun melaksanakan pernyataan SQL dan mengubah keputusan ke dalam tatasusunan peta. Walaupun menggunakan pemformatan rentetan untuk penggantian parameter ialah amalan biasa, ia menimbulkan risiko keselamatan dan mengehadkan kefleksibelan.

Untuk meningkatkan keselamatan kod dan membolehkan parametrisasi, seseorang boleh menggunakan fungsi sqlalchemy.sql.text() untuk mencipta parameter berparameter pernyataan SQL. Pendekatan ini memastikan parameter ikatan dikendalikan dengan betul, mengurangkan risiko serangan suntikan SQL.

Untuk memasukkan parameterisasi ke dalam fungsi __sql_to_data() yang disediakan dalam soalan, ubah suainya kepada yang berikut:

def __sql_to_data(sql_text, parameters):
    result = []
    connection = engine.connect()
    try:
        rows = connection.execute(sql_text, parameters)
        for row in rows:
            result_row = {}
            for col in row.keys():
                result_row[str(col)] = str(row[col])
            result.append(result_row)
    finally:
        connection.close()
    return result

Parameter sql_text hendaklah pernyataan SQL yang dihuraikan melalui sqlalchemy.sql.text(), dan parameter parameter ialah kamus yang mengandungi nilai yang akan digantikan.

Kini, daripada menggunakan pemformatan rentetan untuk memasukkan parameter, anda boleh menghantar kamus kepada kaedah execute():

return __sql_to_data(sql_get_profile, {'user_id': user_id})

Pendekatan ini menyediakan cara yang selamat dan fleksibel untuk menghantar parameter dalam kaedah connection.execute() SQLAlchemy.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Connection.execute() SQLAlchemy dengan Selamat dengan Pernyataan SQL Berparameter?. 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