억대 연봉을 위한 인간수업
Published 2020. 1. 13. 16:48
Python과 DB 연동 Develop/python
반응형

 

 

파이썬은 DB와 연동하여 사용할 수 있다. 

DB와 연동해 소스코드로 DB

DB와 연동하기 위한 모듈을 인스톨하여 DB와 커넥션을 한다.

 

 

 

 

 

 

 

-DB 연동법

conn = pymysql.connect(host = '13.209.50.87',user = 'root',password='qwer1234',db = 'study',charset='utf8') 

-> conn이란 이름으로 dB의 ip,계정ID,PW,DB명과 인코딩기준을 적어 DB를 나타내는 connection 객체를 만든다.

 

 

 

-DB 사용을 위한 준비

curs = conn.cursor()

-> DB에서 작업하기 위한 커서를 만드는 작업이다. 

 

 

 

 

-DML 사용법

sql = "INSERT INTO real_news_table(category,news_title) values(%s,%s)"

-> 삽입문으로 INSERT INTO 테이블명(속성명) values(값1,값2) 의 형식을 가지고 잇는 DML(데이터 조작어)이다

sql이란 변수안에 삽입문 자체를 저장하여 사용하는 방법으로, 해당 테이블의 속성순서에 따라 values를 변수로 받아 삽입 가능하다.

 

 

 

* 삽입문 등의 명령어 입력시 주의사항

DML,DDL,DCL을 파이썬에서 적용할때 구분을 "" 혹은 ''으로 구분한다. 

이말은 "INSERT INTO real_news_table(category,news_title) values("신발사이즈","255")" 라는 문법은

""안에 있는 문장을 하나의 문장으로 인식하므로, 위의 문장은  "INSERT INTO real_news_table(category,news_title) values("까지만 인식된다는 것이다.

그러므로 하나의 DML을 입력할 시 처음과 끝은 "" 혹은 ''로 묶어 구분을 해줄 필요가 있다.

 "INSERT INTO real_news_table(category,news_title) values('신발사이즈','255')" <- 이런 방식으로 입력해야 한다.

 

 

 

만약 해당명령어 사이의 변수를 사용하고 싶을땐  "INSERT INTO real_news_table(category,news_title) values("+str(showSize)+",'255')"

이런 방식으로 +str(변수명)+ 를 사용해야 한다. 

-> str은 변수 자체가 문자형이 아닌 정수나 소수인 경우 발생하는 오류를 막기위해서 문자열로 형변환 시켜주는 역할을 한다. 

 

 

 

실제 만든 문장을 활용하는건 다음과 같다.

for i in range(0,end):

    curs.execute(sql,('정치',jung[i]))     -> 실제 sql의 해당 문법을 사용한뒤 커서를 이동하여 sql문을 실행하는 코드이다.

    curs.execute(sql, ('경제', eco[i]))

    curs.execute(sql, ('사회', socail[i]))

    curs.execute(sql, ('생활', life[i]))

    curs.execute(sql,('세계',world[i]))

    curs.execute(sql, ('IT', internet[i]))

 

 

 

 

- DB에 반영

conn.commit()

-> commit()을 사용해 주어야 입력된 데이터가 DB에 저장된다.

 

 

 

 

반응형

'Develop > python' 카테고리의 다른 글

파이썬 - 별찍기  (0) 2022.07.07
크로아티아 알파벳(백준 2941번)  (0) 2022.07.01
BeautifulSoup 사용법  (0) 2020.01.13
Requests 모듈 사용법  (0) 2020.01.13
[Python]모듈이란?  (0) 2020.01.07
profile

억대 연봉을 위한 인간수업

@회뜨는참치

이 글이 당신에게 조금이라도 도움이 된다면 좋겠습니다.