-
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를 공부한 것이 아니다!
'Python' 카테고리의 다른 글
Python 문법 기초 35 - 멀티 thread(병렬구조) (0) 2022.10.23 Python 문법 기초 34 - thread(자원공유, 활성화/비활성화) (0) 2022.10.23 Python 문법 기초 33 - MyriaDB 연동(명령어) (0) 2022.10.22 Python 문법 기초 32 - 개인용 DB : sqlite3 (0) 2022.10.22 Python 문법 기초 31 - file i/o (try ~ except) + pickle(import) (0) 2022.10.22