Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Connection.execute() SQLAlchemy dengan Selamat dengan Pernyataan SQL Berparameter?
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!