본문 바로가기
개발자의삶/python

Python 의 DB 연결해보기 실습

by 트라네스 2022. 3. 21.
728x90
반응형

 

Python의 DB 연결하는 코드를 지속적으로 만들다 보니 나의 블로그나 깃허브에 샘플 코드를 만들어두면 참고가 될 것 같아서 만들어둡니다. 

 

파이썬의 디비 설정 

 python 의 configparser를 이용하여 config인 ini파일 등을 읽을 수 있습니다. 개발을 하다 보면 똑같은 설정이지만 환경에 따라서 변경을 해야 한다면 이 설정이 있으면 좋을 것 같습니다. 아래와 같이  ini 파일을 구성합니다.

[LOCAL]
HOST = 127.0.0.1
DATABASE_NAME = test_tb
USER = test
PASSWORD = db_tester_1234
PORT = 3306
CHARSET = utf-8

 

파이썬의 디비 연결 커넥터 

  python 3의 모듈중 하나인 pymysql을 설치합니다. 중간에 설치 시 실패할 경우 설치된 pip가 python2가 아닌 python3 인지 버전을 확인하고 사용하세요. 정확하게 모르시겠다면 pip3명령어를 사용하시기를 바랍니다. 아래와 같이 나온다면 이미 설치된 내용이니 패스하시면 됩니다. 

$ pip3 install pymysql
Requirement already satisfied: pymysql in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (1.0.2)

 

  연결을 위한 모듈까지 모두 설치 완료하였다면 이제 연결할 준비는 모두 끝났습니다. 다만, mysql에서 remote로 연결이 가능하도록 허용하였는지는 확인을 하시기를 바랍니다. 

 

 자 이제 연결을 위해서 코드를 작성해볼까요. DB_TEST 클래스를 만들어 봅시다.

import sys 
import pymysql 
import configparser

class DB_TEST : 
    
    sample_query = """
                   select column_list1 
                   from table_name
                   where condition1
                   """
    
    def __init__(self):
        config = configparser.ConfigParser()
        config.read('./dbconfig/dbinfo.ini')
        self.host = config['DEV']['HOST'] 
        self.database_name = config['DEV']['DATABASE_NAME'] 
        self.user = config['DEV']['USER'] 
        self.password = config['DEV']['PASSWORD'] 
        self.charset = config['DEV']['CHARSET']        
        
        
    def get_connection(self):
        self.conn = pymysql.connect(host=self.host,
                            user=self.user,
                            password=self.password,
                            db=self.database_name
                            )
        return self.conn

    def do_something(self):
        try:
            self.conn = self.get_connection()
            cur = self.conn.cursor()  
            sql = self.sample_query
            query_param = "sample"
            vals = (query_param,)
            cur.execute(sql, vals)
            
            #한 줄 출력
            row = cur.fetchone()
            if row == None:
                print('검색결과없음')
            else:
                for row in cur:
                    #print(row)
                    print('row[0] : ' , row[0])
            self.conn.close()
        except Exception as e:
            print('do_something is occured Exception : ' , e )

 

 여기서 중요한 점은 파이썬에서 쿼리와 같은 문자열의 포멧을 보려면 아래와 같이 만들어 두는 것이 좋다. 보통 다른 언어를 공부하시던 분들이 하시던 대로 쓰면 아래와 같은 에러를 만나게 된다.

 

IndentationError: unexpected indent  오류 해결

 저도 처음에 이 에러를 만났을 때 아래 샘플 예제처럼 사용하였는데요. 이제보니 좀 창피하네요.

sample_query = "select column1, column2 "
              +"from test_table "
              +"where condition1 "

 

 파이썬에서 위와 같은 오류를 만났을 땐 아래와 같이 변수를 변경해주는 것을 추천합니다.

"""
select column
from table
where condition 
"""

혹은 

(
"select column "
"from table "
"where condition "
)

혹은 

"select column " \
"from table " \
"where condition "

 

 혹시 틀린 내용이 있거나 오탈자가 있다면 댓글 부탁 드립니다. 모두에게 도움 되는 글이었으면 좋겠습니다. 감사합니다.

728x90
반응형

댓글


TOP

TEL. 02.1234.5678 / 경기 성남시 분당구 판교역로