[PYTHON] 암호에 특수 문자가 포함되어있을 때 연결 문자열 작성
PYTHON암호에 특수 문자가 포함되어있을 때 연결 문자열 작성
저는 Python 프로젝트에 SQLalchemy를 사용하고 있습니다. 데이터베이스에 액세스하기 위해 깔끔한 연결 문자열을 갖고 싶습니다. 그래서 예를 들면 :
engine = create_engine('postgres://user:pass@host/database')
문제는 암호가 연결하려고 할 때 구분 기호로 해석되는 일련의 특수 문자를 포함하고 있기 때문입니다.
나는 단지 객체를 생성하고 다음과 같이 내 자격 증명을 전달할 수 있다는 것을 알았습니다.
drivername = 'postgres',
username = 'user',
password = 'pass',
host = 'host',
database = 'database'
하지만 가능한 경우 연결 문자열을 사용하는 편이 낫습니다.
확실하게하려면 연결 문자열 또는 연결 문자열의 암호 부분을 인코딩 할 수 있습니까? 그러면 올바르게 구문 분석 할 수 있습니까?
해결법
-
==============================
1.백 슬래시는 URL 구성 요소 문자열에 유효한 이스케이프 문자가 아닙니다. 연결 문자열의 암호 부분을 URL 인코딩해야합니다.
백 슬래시는 URL 구성 요소 문자열에 유효한 이스케이프 문자가 아닙니다. 연결 문자열의 암호 부분을 URL 인코딩해야합니다.
from urllib import quote_plus as urlquote from sqlalchemy.engine import create_engine engine = create_engine('postgres://user:%s@host/database' % urlquote('badpass'))
SQLAlchemy에서 사용 된 클래스의 구현을 보면 (sqlalchemy / engine / url.py에서) 데이터베이스 연결 URL을 나타내면 URL 인스턴스를 문자열로 변환 할 때 같은 방법을 사용하여 암호를 이스케이프합니다. 구문 분석 코드는 보완 urllib.unquote_plus 함수를 사용하여 연결 문자열에서 암호를 추출합니다.
from https://stackoverflow.com/questions/1423804/writing-a-connection-string-when-password-contains-special-characters by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 : 0으로 나누기 주위에 점점 (0) | 2018.11.23 |
---|---|
[PYTHON] 파이썬 함수의 복사본을 만드는 법 [duplicate] (0) | 2018.11.23 |
[PYTHON] 파이썬에서 이중 백 슬래시를 단일 백 슬래시로 바꾸는 방법은 무엇입니까? (0) | 2018.11.23 |
[PYTHON] "튜플 목록"을 평면 목록 또는 행렬로 변환합니다. (0) | 2018.11.23 |
[PYTHON] matplotlib로 플롯의 구석에 작은 이미지를 삽입하는 방법? (0) | 2018.11.23 |