[PYTHON] "% s"% 형식과 "{0}". format () vs "?"형식
PYTHON"% s"% 형식과 "{0}". format () vs "?"형식
SQLite에 대한이 게시물에서 aaronasterling은
그러나 나는 첫 번째와 두 번째가 같다고 생각했습니다. 이 세 가지의 차이점은 무엇입니까?
해결법
-
==============================
1.
"attach \"%s\" as toMerge" % "b.db"
대신 '대신'을 사용해야하므로 탈출 할 필요가 없습니다.
사용되지 않는 이전 형식 지정 문자열을 사용했습니다.
'attach "{0}" as toMerge'.format("b.db")
가능한 경우 이전 버전 대신 사용해야하는 최신 Python 버전의 새로운 형식 문자열 기능을 사용합니다.
"attach ? as toMerge"; cursor.execute(cmd, ('b.db', ))
이것은 문자열 형식을 완전히 생략하고 대신 SQLite 기능을 사용하므로 올바른 방법입니다.
큰 장점 : SQL 주입 위험 없음
-
==============================
2.첫 번째와 두 번째 결과는 똑같지 만 두 번째 방법은 새로운 버전의 Python에서 문자열을 형식화하는 데 선호됩니다.
첫 번째와 두 번째 결과는 똑같지 만 두 번째 방법은 새로운 버전의 Python에서 문자열을 형식화하는 데 선호됩니다.
그러나 세 번째 방법은 문자열을 조작하는 대신 매개 변수를 사용하기 때문에 더 나은 방법입니다. 이것은 더 빠르고 안전합니다.
-
==============================
3.왜냐하면 그것은 도망 가지 않기 때문입니다. b.db를 사용자 입력으로 바꾼 경우 SQL 주입에 취약하게됩니다.
왜냐하면 그것은 도망 가지 않기 때문입니다. b.db를 사용자 입력으로 바꾼 경우 SQL 주입에 취약하게됩니다.
from https://stackoverflow.com/questions/3691975/s-format-vs-0-format-vs-format by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 판다 열 순서를 재 배열하는 방법? (0) | 2018.11.02 |
---|---|
[PYTHON] matplotlib - 이미지를 변수에 저장 (0) | 2018.11.02 |
[PYTHON] X에서 활성 창 제목 가져 오기 (0) | 2018.11.02 |
[PYTHON] Python Matplotlib로 그림과 그림 결합 (0) | 2018.11.02 |
[PYTHON] 로컬 컴퓨터 또는 웹 리소스에서 jupyter 노트북에 이미지 또는 그림을 포함시키는 방법? (0) | 2018.11.02 |