파이썬으로 데이터베이스와 연결하면 데이터를 입력, 수정, 조회하는 등 SQL의 활용도를 더 높일 수 있다. 즉, 간단한 명령어를 실행하는 것만으로 데이터베이스에 값을 입력하거나, 원하는 결과를 추출할 수 있게 된다.
시작하기 전에
파이썬과 pymysql 라이브러리를 설치한 후에는 MySQL과 연동하는 데이터베이스 연동 프로그램을 작성할 수 있다. 파이썬 프로그램을 작성하는 가장 큰 이유는 일반 사용자가 데이터베이스의 내용을 사용하고자 할 때 SQL까지 배우기에는 무리가 있기 때문이다. 파이썬을 잘 이용한다면 일반 사용자는 SQL 대신 간단한 명령어를 입력하는 것만으로 데이터베이스에서 원하는 결과를 얻을 수 있다.
즉, SQL의 활용도가 더욱 높아지는 것이다.
연동 프로그램 기본
파이썬과 MySQL 데이터베이스를 연동해 보겠다. 연동 프로그램이 완성되면 MySQL 워크벤치 없이도 MySQL에 접근하고 사용할 수 있다.
연동 프로그램을 위한 쇼핑몰 생성
다음 그림은 일반적인 쇼핑몰의 회원이 저장된 정 보를 단순화해서 가정한 것이다. 이와 같은 데이터베이스를 구축하는 것을 연습해 보겠다.
먼저 MyWQL 워크벤치를 실행해서 '혼공 쇼핑몰 DB'를 생성한다.
soloDB를 생성한 후에는 더 이상 MySQL 워크벤치를 사용하지 않는다.
파이썬에서 데이터 입력
파이썬에서 데이터를 입력하기 위해서는 다음과 같은 단계를 거치게 된다.
파이썬에서 이 그림의 순서대로 '혼공 쇼핑몰 DB'를 구축하고 사용하겠다. IDLE를 실행해서 대화형 모드로 진행한다.
1. MySQL 연결하기
MySQL을 사용하기 위해서는 먼저 관련 모듈인 pymysql을 임포트한 후 데이터베이스와 연동해야 한다. 보통 변수는 conn을 많이 사용한다. 연결이 성공하면 아무런 메시지가 나오지 않는다.
뭔가 잘못 입력했는지 오류가 떴다. 에러 메시지 TypeError: 'module' object is not callable는 pymysql 모듈을 올바르게 호출하지 않았기 때문에 발생한다. pymysql 모듈은 함수처럼 직접 호출할 수 없고, 연결 객체를 생성하기 위해 pymysql.connect() 메서드를 사용해야 한다.
이제 아무런 메시지가 뜨지 않고 잘 해결되었다.
2. 커서 생성하기
커서는 데이터베이스에 SQL 문을 실행하거나 시행된 결과를 돌려받는 통로로 생성하면 된다. 앞에서 연결한 연결자에 커서를 만들어야 한다. 이 책에서는 cur이라는 변수를 사용했다.
3. 테이블 만들기
테이블을 만드는 SQL 문을 커서이름.execute() 함수의 매개변수로 넘겨주면 SQL 문이 데이터베이스에 실행된다. 즉, 파이썬에서도 MySQL 워크벤치에서 사용한 것과 동일한 SQL 문을 사용하면 된다.
결과의 번호는 0 또는 다른 번호가 나와도 상관없다.
4. 데이터 입력하기
데이터는 필요한 만큼 반복해서 입력한다. 데이터 입력도 SQL 문을 사용해야 하므로 커서이름.execute() 함수를 사용한다.
한 문장씩 써야 객체가 하나씩 생성된다.
5. 입력한 데이터 저장하기
앞에서 입력한 4건의 데이터는 아직 데이터베이스에 완전히 저장된 것은 아니다. 임시로 저장된 상태로 이를 확실하게 저장하는 것을 커밋이라고 부른다.
6. MySQL 연결 종료하기
데이터베이스를 모두 사용했다면 연결한 데이터베이스를 닫아야 한다.
연동 프로그래밍 활용
이번에는 단계별이 아닌 완전한 파이썬 응용 프로그램을 만들어보겠다. 한번 만들어놓으면 계속 사용되도록 스크립트 모드에서 작성해 본다.
완전한 데이터 입력 프로그램의 완성
사용자가 반복해서 데이터를 입력하는 코드를 작성해 보겠다. 앞에서 생성한 soloDB의 userTable에 직접 키보드로 입력받아 한 행씩 계속해서 데이터를 입력하겠다. 그리고 더 이상 입력할 데이터가 없으면 Enter 키를 입력하여 종료하는 것으로 처리한다.
데이터 입력 프로그램
사용할 변수를 선언하고 데이터베이스를 연결하여 커서를 준비했다. 테이블은 이미 생성되어 있으므로 CREATE TABLE~ 문은 생략했다. 무한 반복하면서 data1 ~ data4를 입력받는다. 만약 data1에서 아무것도 입력하지 않고 Enter 키를 입력하면 while 문을 빠져나간다.
INSERT 문으로 입력한 데이터를 sql 변수에 문자열로 만든다. 주의할 점은 data1~ data3은 작은따옴표로 묶어야 하고, 마지막 data4는 정수이므로 작은따옴표로 묶으면 안 된다.
이제 잘 만들어졌는지 MySQL에서 확인해 보면 다음과 같다. 이 내용은 책에는 없지만 동영상 강의에 있어서 따라 해보았다.
앞서 만든 4명의 정보와 함께 조금 전에 입력한 수지라는 사람도 함께 저장된 것을 볼 수 있다.
MySQL의 데이터 조회를 위한 파이썬 코딩 순서
파이썬으로 데이터를 조회하기 위해서는 다음과 같은 단계를 거치게 된다. 데이터를 입력할 때와 비슷하지만 3번과 번에서 다른 점이 있다.
3번에서는 커서에 SELECT로 조회한 결과를 한꺼번에 저장해 놓는다. 그리고 4번에서 조회한 데이터를 fetchone() 함수로 한 행씩 접근한 후 출력한다. 또한 조회하는 것은 데이터를 입력하거나 변경하는 것이 아니므로 굳이 커밋(저장)을 해줄 필요는 없다.
완전한 데이터 조회 프로그램의 완성
이번에는 테이블의 데이터를 조회하는 완전한 코드를 작성해 보겠다. 다음 코드를 실행하면 테이블의 모든 데이터가 조회된다.
데이터 조회 프로그램
SELECT 문으로 테이블을 조회했다. 조회한 결과는 cur 변수에 저장되고 fetchone() 함수로 결과를 한 행씩 추출한다. 이 행은 while 문 안에 있으므로 무한 반복된다. 즉, 조회한 결과의 모든 행을 추출한다.
단 조회한 결과가 없으면 None 값을 반환하여 while 문을 빠져나온다. fetchone() 함수로 조회한 결과가 저장된 row 변수에 튜플 형식으로 각 행 데이터가 저장된다.
단원 마무리 및 확인 문제 풀기
'알고리즘 및 자료 관리 > SQL' 카테고리의 다른 글
SQL과 파이썬 연결 4 - GUI 응용 프로그래밍 2 : 완전한 형태의 GUI 응용 프로그래밍 (0) | 2024.12.12 |
---|---|
SQL과 파이썬 연결 3 - GUI 응용 프로그램 1 : GUI 기본 프로그래밍 (0) | 2024.12.12 |
SQL과 파이썬 연결 1 - 파이썬 개발 환경 준비 (0) | 2024.12.11 |
스토어드 프로시저 3 - 자동 실행되는 트리거 (0) | 2024.12.11 |
스토어드 프로시저 2 - 스토어드 함수와 커서 (0) | 2024.10.24 |