Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 우한코로나바이러스
- 전염병
- sharonchoi
- 우한 코로나
- 정은경 본부장님
- 미중
- 우한코로나
- 진짜영웅
- Bolton
- 중국외교부
- 확진자수
- parasite
- 코로나바이러스
- cnn
- 치앙마이
- 코로나19
- everybody wants you
- 필리핀사망
- 코로나
- 창궐
- 신종코로나
- 봉준호감독통역사
- 우한
- wuhan
- 최성재
- 웨일즈
- 조현병
- 어서와한국은처음이지
- 봉준호감독통역
- red hearse
Archives
- Today
- Total
오지's blog
sqlalchemy.exc.OperationalError: (mariadb.OperationalError) Unknown server host '@ip_address' 본문
개발노트/데이터베이스
sqlalchemy.exc.OperationalError: (mariadb.OperationalError) Unknown server host '@ip_address'
잡스러운노트, 잡스노트 2021. 10. 21. 21:22728x90
반응형
ip address가 맞음에도 다음과 같이 unknown server host 에러가 발생한다.
원인: ip주소를 읽을때 앞 패스워드 입력시 reserved word가 있어서 인터프리터 입장에서 ip주소를 오해함에서 문제가 발생
해결 방법:
password = urllib.parse.quote_plus(f"{dbinfo['MARIADB_PWD']}")
다음과 같이 password자체를 connection string에 포함하지 말고 구문분석해주는 urllib라이브러리를 이용하여 password를 connection string에 포함한다.
아래는 예제코드
def dbcon():
with open("dbinfo.json") as fp:
dbinfo = json.loads(fp.read())
# dbconnector://(user):(password)@(host):(port)/(db)
# need to use urllib lib because password include reserved character like @
password = urllib.parse.quote_plus(f"{dbinfo['MARIADB_PWD']}")
snow_str = f"snowflake://{dbinfo['SF_USER']}:{dbinfo['SF_PWD']}@{dbinfo['SF_ACCOUNT']}/{dbinfo['SF_DB']}/{dbinfo['SF_SCHEMA']}?warehouse={dbinfo['SF_WH']}"
mysql_str = f"mysql+pymysql://{dbinfo['MYSQL_USER']}:{dbinfo['MYSQL_PWD']}'@'{dbinfo['MYSQL_HOST']}/{dbinfo['MYSQL_DB']}?charset=utf8mb4"
maria_str = f"mariadb+mariadbconnector://{dbinfo['MARIADB_USER']}:{password}@{dbinfo['MARIADB_HOST']}:{dbinfo['MARIADB_PORT']}/{dbinfo['MARIADB_DB']}"
postgre_str = f"postgresql://{dbinfo['POSTGRE_USER']}:{dbinfo['POSTGRE_PWD']}@{dbinfo['POSTGRE_HOST']}/{dbinfo['POSTGRE_DB']}"
mssql_str = f"mssql+pymssql://{dbinfo['MSSQL_USER']}:{dbinfo['MSSQL_PWD']}@{dbinfo['MSSQL_HOST']}:{dbinfo['MSSQL_PORT']}/{dbinfo['MSSQL_DB']}"
print(maria_str)
connection = create_engine(maria_str)
connection.execute("create table tbl(col1 int, col2 varchar(8));")
connection.execute("insert into tbl values(1, 'test');")
result = connection.execute("select * from tbl;").fetchone()
print(result)
connection.execute("drop table tbl;")
실행결과
mariadb+mariadbconnector://user:password%21%40@127.0.0.1:3306/dbname
(1, 'test')
references.
https://stackoverflow.com/questions/58661569/password-with-cant-connect-the-database
https://docs.sqlalchemy.org/en/14/core/engines.html
'개발노트 > 데이터베이스' 카테고리의 다른 글
snowflake db구성에 관한 쿼리 (0) | 2022.04.14 |
---|---|
centos에서 pip install mysqlclient설치시 에러 해결방안 (0) | 2021.12.21 |
MYSQL 접속시 public key retrieval is not allowed 에러 해결방법 (0) | 2021.10.21 |
MYSQL설치 후 설정 Ubuntu 20.04 기준 (0) | 2021.10.21 |
csv파일을 DB에 넣기(pandas이용) (0) | 2021.09.30 |
Comments