2017-01-13 2 views
0

소스 테이블의 테이블 이름을 대상 테이블에 매핑하는 파이썬 사전이 있습니다.목록 이해가있는 SQL 문자열에 대한 파이썬 사전 매핑

참고 :이 질문은 다른 쿼리 문자열에 대한 이전 스레드에서 응답했지만이 쿼리 문자열은 더 복잡하며 같은 목록 이해 방법을 사용하여 생성 할 수 있는지 확실하지 않습니다.

사전 :

나는 동적으로 새 열 이름 쌍을 사전에 추가 할 때 제대로 업데이트됩니다 있도록 다음과 같은 쿼리 문자열을 생성 할 필요가
tablemap_computer = { 
    'ComputerID' : 'computer_id', 
    'HostName' : 'host_name', 
    'Number' : 'number' 
} 

.

(ComputerID, HostName, Number) VALUES (%(computer_id.name)s, %(host_name)s, %(number)s) 

목록 작성으로 시작했지만이 기술로는 지금까지 쿼리 문자열의 첫 번째 부분 만 생성 할 수있었습니다. 당신이 얻을 무슨 말을 하려는지 이해한다면

queryStrInsert = '('+','.join([tm_val for tm_key, tm_val in tablemap_incident.items()])+')' 
print(queryStrInsert) 

#Output 
#(computer_id,host_name,number) 
#Still must generate the remaining part of the query string parameterized VALUES 

답변

1

는, 당신은이 방법을 끝낼 수 있습니다

holder = list(zip(*tablemap_computer.items())) 

"insert into mytable ({0}) values ({1})".format(",".join(holder[0]), ",".join(["%({})s".format(x) for x in holder[1]])) 

이 양보해야

# 'insert into mytable (HostName,Number,ComputerID) values (%(host_name)s,%(number)s,%(computer_id)s)' 

도움이 되었기를 바랍니다.