ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MariaDB 연동 예제
    Python 2022. 10. 22. 18:09

     

    # MariaDB 연결정보를 객체로 저장
    # 보이면 안되기 때문에 보이지 않게 별도의 파일에 보관해야 된다.
    
    
    config = {
        'host':'127.0.0.1',
        'user':'root',
        'password':'설정한 비밀번호 입력',
        'database':'test',
        'port':3306,
        'charset':'utf8',
        'use_unicode':True
    }
    
    import pickle
    
    with open('mydb.dat', mode='wb') as obj:
        pickle.dump(config, obj)

    연결 정보는 보안을 위해서 밖으로 빼 놔야 된다.

    밑에 처럼 pickle을 import 해서 dac타입으로 파일을 생성 후 거기에 보관하는 법을 추천한다.

     

    # 키보드에서 부서번호를 입력받아 해당 부서 직원자료(사원번호, 이름, 부서, 연봉, 직급) 출력
    import MySQLdb
    import pickle
    
    with open('mydb.dat', mode='rb') as obj:
        config = pickle.load(obj)
    
    def chulbal():
        conn = MySQLdb.connect(**config)
        print(conn)
    
    if __name__ == '__main__':
        chulbal()

    다시 돌아와서 pickle을 import한 뒤에 open 함수로 config 변수명에 그 값을 넣어주면 DB 값을 불러올 수 있다.

     

    # 키보드에서 부서번호를 입력받아 해당 부서 직원자료(사원번호, 이름, 부서, 연봉, 직급) 출력
    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
                where buser_num={}
            """.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_num,jikwon_pay,jikwon_jik in datas:
                print(jikwon_no,jikwon_name,buser_num,jikwon_pay,jikwon_jik)
            
            print('인원수 : {}'.format(len(datas)))
        except Exception as e:
            print('err : ', e)
        finally:
            cursor.close()
            conn.close()
        
    
    if __name__ == '__main__':
        chulbal()
    
    <console>
    부서번호 : 30
    4 이미라 30 4500 대리
    9 채송화 30 5000 대리
    11 김부해 30 3900 사원
    18 이순기 30 7800 과장
    19 이유라 30 5500 대리
    23 김기만 30 6600 과장
    30 최미숙 30 4000 사원
    인원수 : 7

    return은 함수의 강제적인 종료이고, sys.exit(0) 프로그램의 강제적인 종료 sys를 import 해서 사용 가능

     

     

    join을 사용한 예제

    # 키보드에서 부서번호를 입력받아 해당 부서 직원자료(사원번호, 이름, 부서, 연봉, 직급) 출력
    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='{}'
            """.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()
    
    
    <console>
    부서이름 : 총무부
    1 홍길동 10 9900 이사
    10 박치기 10 3700 사원
    13 박명화 10 4900 대리
    17 한국인 10 8000 부장
    25 박혁기 10 3800 사원
    26 김나라 10 3500 사원
    29 박가희 10 4100 사원
    인원수 : 7

    join을 사용하여 buser와 jikwon의 테이블을 join 하였다.

    sql 문을 적을 때, where buser_name='{}' {}안에 문자열이 들어간다면 무조건 ‘’ 표로 감싸야 된다. 숫자가 들어갈 경우에는 넣어도 되고 안 넣어도 된다.

     

     

    우리는 sql 문을 공부한 것이다!

    오라클, 마리아DB를 공부한 것이 아니다!

     

     

    댓글

Designed by Tistory.