본문 바로가기

python

DB 연결 - 기본 db, sql문 예시

기본 sql 형태 학습하기

2022.10.12 - [database/MariaDB] - select, insert, update, delete 기본

 

db_connect

config 관련 정보는 해킹에 취약하니 pickle로 저장하기 위해 별도로 코드를 작성한다

# MariaDB 연결 정보를 객체로 저장

config = {
    'host':'127.0.0.1',
    'user':'root',
    'password':'123',
    'database':'test',
    'port':3306,
    'charset':'utf8',
    'use_unicode':True
}

import pickle

with open('mydb.dat', mode='wb') as obj:
    pickle.dump(config, obj)

 

sql 기본 시작 형태

db3_mariadb

# 키보드에서 부서번호를 입력받아 해당 부서 직원자료(사번,이름,부서,연봉,직급) 출력
import MySQLdb
import pickle

with open('mydb.dat', mode='rb') as obj:
    config = pickle.load(obj)


def chulbal():
    try:
        conn = MySQLdb.connect(**config)
        # print(conn)
        cursor = conn.cursor()

    except Exception as e:
        print('err : ',e)
    finally:
        cursor.close()
        conn.close()

if __name__=='__main__':
    chulbal()

 

전체 코드

# 키보드에서 부서번호를 입력받아 해당 부서 직원자료(사번,이름,부서,연봉,직급) 출력
import MySQLdb
import pickle

with open('mydb.dat', mode='rb') as obj:
    config = pickle.load(obj)

def chulbal():
    try:
        conn = MySQLdb.connect(**config)
        # print(conn)
        cursor = conn.cursor()
        buser_info = input('부서이름 : ')
        sql = """
            select jikwon_no,jikwon_name,buser_num,jikwon_pay,jikwon_jik
            from jikwon inner join buser 
            on jikwon.buser_num=buser.buser_no
            where buser_name='{0}'
        """.format(buser_info)
        # print(sql)
        
        cursor.execute(sql)
        datas = cursor.fetchall()
        # print(datas, len(datas))
        
        if len(datas) == 0:
            print(str(buser_info) + '에 해당되는 자료는 없어요')
            # 함수 종료
            return       
            # 프로그램 종료
            # sys.exit(0)
        
        for jikwon_no,jikwon_name,buser,jikwon_pay,jikwon_jik in datas:
            print(jikwon_no,jikwon_name,buser,jikwon_pay,jikwon_jik)

        print('인원수 : {}'.format(len(datas)))
    except Exception as e:
        print('err : ',e)
    finally:
        cursor.close()
        conn.close()

if __name__=='__main__':
    chulbal()

해당 부서이름이 있을 경우

 

부서이름 : 총무부
1 홍길동 10 9900 이사
10 박치기 10 3700 사원
13 박명화 10 4900 대리
17 한국인 10 8000 부장
25 박혁기 10 3800 사원
26 김나라 10 3500 사원
29 박가희 10 4100 사원
인원수 : 7

 

해당 부서이름이 없을 경우

 

부서이름 : 축구부
축구부에 해당되는 자료는 없어요