2012-11-26 4 views
0

필드 이름과 같은 사전 키가있는 사전으로 db에 삽입 할 항목을 저장했습니다. 이 작업을 직접 수행 할 수있는 간단한 명령이 있습니까?사전 값 파이썬으로 저장된 항목 값을 사용하여 mysqldb에 항목 삽입

현재이 내가

cursor.execute('INSERT INTO jobs (title, description, country, state, city) 
VALUES (%(title)s, %(description)s, %(country)s, %(state)s, %(city)s)', (job_data.get_parsed_dictionary())) 

여러 번 파이썬이 모든 일에 대해 너무 많은 우아한 라이브러리 메소드가 사용하는 명령입니다. 나는 그것을 훨씬 더 단순하게 만드는 그러한 명령을 기대하고있다.

답변

0

당신은 열 이름을 생성 할 수 :

data = job_data.get_parsed_dictionary() 

columns = ', '.join(data.keys()) 
parameters = ', '.join(['%({0})s'.format(k) for k in data.keys()]) 
query = 'INSERT INTO jobs ({columns}) VALUES ({parameters})'.format(columns=columns, parameters=parameters) 

cursor.execute(query, data) 

당신은 .get_parsed_dictionary() 결과에서 키가 (당신의 SQL 주입 공격 경로를 기억) SQL 쿼리로 보간 안전 있는지 확인하기 위해 필요성을 . 가능한 열 이름 목록이 있으면 편리하게 찾을 수 있습니다.이 경우 dict에서 찾을 수있는 길잃은 '추가'키를 걸러 낼 수 있습니다.

+0

get_parsed_dictionary()의 키는 코드에서 가져 왔지만 데이터의 키를 변경하여 SQL 주입을 수행하는 방법은 무엇입니까? – raju

+0

@santu : 사전의 키가 변경되지 않고 쿼리에 입력됩니다. 그래서 어떤 키가''이면; DROP TABLE jobs;'큰 * 문제가 있습니다. –