2014-12-01 3 views
0

내가 실행하고자하는 이름 바꾸기 문 다음 한 파이썬 방법으로 .format를 사용하여 MySQL의 쿼리를 만들려면 테이블. 이 경우 문자열을 가장 잘 읽을 수있는 방법을 찾고 있습니다. 선택의 도구 .format 방법으로 보인다 분명 나는이형식 문자열은 그래서

"RENAME TABLE '{0}' TO '{1}', '{2}' TO '{3}', 
    '{4}' TO '{5}'".format('my_table','my_table_temp','my_new_table','my_table','my_table_temp','my_new_table') 

하지만 내가 만들고 싶어 않는 것은 어떻게 든 단지 숫자가 표시이

.format('my_table','my_table_temp','my_new_table') 

와 같은 것입니다 같은 것을 만들고 싶어하지 않는다 각 문자열로 대체해야합니다. 그냥 분명히하겠다. 나는 문자열 포맷팅에 6 개의 인수를 사용하지 않고 단지 3을 사용하고 문자열 각각을 두 번 반복하도록했다. 그래서 어떻게 구현해야하는지에 대한 조언을 구하고있다. 사과이 질문은 바보 분명하지만, 난 그냥 너무 늦게되기 전에 심지어 세부 사항에 최대 수준으로 내 코드 스타일을 향상시키고 자와 파이썬 언어

+0

이 전혀 정말 MySQL의에 대한 문제가 아닙니다 - :

그래서 당신은 할 필요가있다. 이것은 심지어 매개 변수화 된 쿼리가 아닙니다. –

+0

7 개의 입력을 제공하는 동안 6 개의 형식 {}} 중괄호가 있습니다. –

+0

SQL 쿼리에서 일반 문자열 서식을 사용하는 것은 위험합니다. 응용 프로그램을 SQL 인젝션에 취약하게 만들 수 있습니다 : http://en.wikipedia.org/wiki/SQL_injection. 때로는 그것을 사용해야하지만, 당신이 사용하는 변수에 사용자 생성 콘텐츠가 없는지 확인하십시오. –

답변

2
In [42]: '{0}, {0}' .format('a') 
Out[42]: 'a, a' 

In [43]: '{0}, {0}' .format('a', 'b') 
Out[43]: 'a, a' 

In [44]: '{0}, {1}' .format('a', 'b') 
Out[44]: 'a, b' 

를 사용하여 끔찍한 쓰레기를 작성, 제본 용 여백 어딘가에서 자신을 찾을 경우 foramt 문자열은 이와 같이 작동합니다. 하지만 표준 파이썬 문자열 치환에 대해,

"RENAME TABLE '{0}' TO '{1}', '{2}' TO '{0}',\ 
'{1}' TO '{2}'".format('my_table','my_table_temp',\ 
         'my_new_table','my_table') 

>>> 
RENAME TABLE 'my_table' TO 'my_table_temp', 'my_new_table' TO 'my_table', 'my_table_temp' TO 'my_new_table' 
+0

내 질문을 끝까지 읽으셨습니까 ?? – micgeronimo

+0

@micgeronimo sry 내 답을 수정하는 것을 잊어 버렸습니다. 대답을 업데이트하십시오. –

+0

감사합니다. 그건 내가 찾던 정확한거야. – micgeronimo