집 >데이터 베이스 >MySQL 튜토리얼 >SQLAlchemy의 `connection.execute` 메소드에 매개변수를 안전하게 전달하는 방법은 무엇입니까?
제공된 코드 조각은 Connection.execute 메소드를 사용하여 SQL 쿼리에서 데이터를 검색하고 결과를 배열로 변환합니다. 지도. 그러나 매개변수화는 현재 문자열 형식으로 처리되므로 보안 위험이 있습니다.
이 문제를 해결하려면 SQLAlchemy의 text() 함수를 사용하여 매개변수화된 SQL 쿼리를 생성할 수 있습니다. 이 함수는 SQL 문자열을 인수로 사용하고 키워드 매개변수를 사용하여 실행 중에 값을 지정할 수 있도록 합니다.
업데이트된 코드 버전은 다음과 같습니다.
def __sql_to_data(sql, values): result = [] connection = engine.connect() try: # Convert SQL to parametrized SQL sql_text = sql.text(sql) rows = connection.execute(sql_text, values) 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
업데이트된 코드의 내용은 다음과 같습니다.
이제 다음을 사용하여 보안을 희생하지 않고 SQL을 매개 변수화할 수 있습니다. __sql_to_data(sql, 값):
sql = 'SELECT ... WHERE user_id = :user_id' values = { 'user_id' : 3 } results = __sql_to_data(sql, values)
위 내용은 SQLAlchemy의 `connection.execute` 메소드에 매개변수를 안전하게 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!