1강 개념 중심 ⏱ 약 25분

 

0. 학습 목표

→ 파이썬으로 MySQL에 접속하는 방식의 차이를 이해하고, 이 시리즈가 어떤 도구를 왜 쓰는지 정리합니다.

더보기

0.1 이번 글에서 다룰 내용

 

이번 글은 개념 중심 강의입니다.

 

본격적으로 코드를 짜기 전에, 파이썬에서 MySQL에 접속하는 방식이 어떻게 나뉘는지부터 정리합니다.

선택지를 먼저 이해해 두면, 다음 강의부터 나오는 접속 코드가 왜 지금 형태인지 자연스럽게 이해됩니다.

 

실제 접속 코드 구현은 2강에서 시작합니다.

 

구분 내용
이해할 것 파이썬에서 MySQL에 접속하는 도구의 차이, 서버 위치(로컬·클라우드)의 의미
정리할 것 QSqlDatabase가 동작하지 않는 이유, 이 시리즈가 Connector/Python을 쓰는 근거

 

강의 흐름은 다음과 같습니다.

접속 방법 나누기       →  파이썬 도구 두 가지와 서버 위치를 구분
QSqlDatabase 확인      →  왜 바로 안 되는지, 무엇이 빠져 있는지
Connector/Python 선택  →  이 시리즈가 이 도구를 고른 이유

 

 

1. MySQL 접속 고려 사항

→ 접속 방법을 '파이썬 도구'와 '서버 위치' 두 축으로 나누어 정리합니다.

더보기

1.1 파이썬에서 MySQL에 접속하는 두 도구

 

파이썬 코드에서 MySQL에 접속할 때 흔히 쓰는 도구는 두 갈래입니다.

 

하나는 MySQL을 파이썬 코드로 직접 다루는 드라이버(Connector/Python, pymysql 등)이고,

다른 하나는 PySide6가 제공하는 QSqlDatabase(QtSql 모듈)입니다.

 

도구 설치 방법 성격
Connector/Python pip 한 줄, 순수 파이썬 MySQL 통신 규약을 파이썬으로 직접 구현. 별도 빌드가 필요 없음
QSqlDatabase (QtSql) 플러그인 별도 빌드 필요 Qt가 제공하는 DB 연결 도구. QSqlTableModel 같은 Qt 데이터 바인딩과 연결 가능

 

두 도구는 목적이 다릅니다.

Connector/Python은 파이썬 코드로 SQL을 직접 다루는 데 적합하고,

QSqlDatabase는 Qt의 화면(모델·뷰)과 DB를 직접 묶는 데 강점이 있습니다.

 

이 시리즈는 앞의 방식,

즉 파이썬 드라이버(Connector/Python)로 직접 다루는 쪽을 택합니다.

 

 

 

 

1.2 서버는 어디에 있는가?

 

위 도구가 '무엇으로 접속하는가'라면, 이번에는 '어디에 접속하는가'입니다.

 

서버가 내 PC에 있든 클라우드에 있든,

접속에 쓰는 파이썬 도구와 코드는 거의 동일하고 host 주소만 달라집니다.

 

서버 위치 설명
로컬 MySQL 내 PC에 설치한 MySQL. hostlocalhost 또는 127.0.0.1
AWS RDS (MySQL) 클라우드에 있는 MySQL. host가 RDS 엔드포인트 주소로 바뀔 뿐,
접속 도구와 코드는 로컬과 같음

 

그래서 'AWS RDS 연동'은 별도의 접속 방식이 아니라, 위 도구로 클라우드에 있는 DB 서버에 접속하는 것일 뿐입니다.

이 시리즈는 학습 편의를 위해 로컬 MySQL을 기준으로 진행합니다.

 

2. QSqlDatabase는 왜 바로 동작하지 않을까

QMYSQL 드라이버가 나지 않는 상황을 확인하고, 무엇이 빠져 있는지 살펴봅니다.

더보기

2.1 Driver not loaded — 코드가 아니라 환경 문제

 

아래는 QSqlDatabase로 MySQL에 접속을 시도하는 예제입니다.

[화면 캡처: QSqlDatabase 예제 실행 시 콘솔에 표시되는 Driver not loaded 메시지]

 

import sys
from PySide6.QtWidgets import QApplication
from PySide6.QtSql import QSqlDatabase

app = QApplication(sys.argv)             # 드라이버 로딩에 QApplication이 먼저 필요
db = QSqlDatabase.addDatabase("QMYSQL")  # MySQL용 QMYSQL 드라이버 선택
db.setHostName("127.0.0.1")
db.setUserName("root")
db.setPassword("1234")
db.setDatabaseName("pyqtdb")

if not db.open():
    print("DB 연결 실패:", db.lastError().text())
else:
    print("DB 연결 성공")

 

이 코드는 DB 연결 실패: Driver not loaded를 출력합니다.

이건 코드가 틀린 게 아니라, MySQL을 Qt 방식으로 쓰기 위한 환경(플러그인)이 없는 것입니다.

같은 코드라도 QMYSQL 플러그인이 준비된 환경에서는 정상 동작합니다.

 

 

 

 

2.2 왜 QMYSQL 플러그인이 빠져 있을까?

 

PySide6를 pip로 설치해도 QMYSQL 드라이버 플러그인은 바로 쓸 수 있는 형태로 들어 있지 않은 경우가 많습니다.

필요하면 사용자가 자기 환경에 맞게 직접 빌드해서 qsqlmysql 플러그인을 만들어 넣어야 합니다.

그 배경에는 두 가지 현실적인 이유가 있습니다.

 

이유 내용
라이선스 QMYSQL 플러그인은 MySQL C 클라이언트 라이브러리에 의존하는데, 이 라이브러리는 GPL 계열입니다. LGPL로 배포되는 Qt 휠에 이를 함께 묶는 것은 라이선스상 간단하지 않습니다
OS별 빌드 Windows·Linux·macOS마다 클라이언트 라이브러리의 설치 위치와 이름이 다르고, Qt 빌드와 ABI까지 맞춰야 합니다. 하나의 휠로 모든 OS를 책임지기 어렵습니다

 

그래서 Qt 쪽 기본 정책은 "필요한 사람은 자기 환경에 맞게 빌드해서 쓰라"는 구조입니다.

이 과정 자체가 초보자에게는 진입 장벽이 됩니다.

 

✔ 정리: QSqlDatabase(QMYSQL)로 MySQL을 쓰는 것 자체는 가능합니다. 다만 플러그인 빌드와 OS별 의존성 문제로, 처음 배우는 단계에서는 준비 과정이 무겁습니다.

 

3. 이 시리즈가 Connector/Python을 쓰는 이유

→ 도구 선택의 근거를 확정하고, 라이선스와 대안(pymysql)까지 정직하게 정리합니다.

더보기

3.1 설치가 간단하다

 

Connector/Python은 MySQL 통신 규약을 순수 파이썬으로 구현했습니다.

별도의 C 라이브러리나 플러그인 빌드가 필요 없어서, 다음 한 줄이면 설치가 끝납니다.

 

[화면 캡처: PyPI의 mysql-connector-python 페이지에서 순수 파이썬 설명과 pip 설치 안내가 보이는 화면]

 

pip install mysql-connector-python

 

2.2에서 본 QSqlDatabase의 빌드 과정과 비교하면 차이가 분명합니다.

이 시리즈가 이 도구를 고른 가장 큰 이유는 바로 이 설치 편의성입니다.

처음 배우는 단계에서 환경 문제로 막히지 않고, 코드 흐름에 집중할 수 있기 때문입니다.

 

 

 

 

3.2 라이선스와 대안(pymysql) 확인하기

 

여기서 한 가지 오해를 짚고 넘어갑니다.

"Connector/Python은 라이선스가 자유로워서 골랐다"고 생각하기 쉽지만, 그렇지 않습니다.

도구 선택의 근거는 어디까지나 설치 편의성이지 라이선스가 아닙니다.

 

💡 팁: Connector/Python의 라이선스도 GPLv2(FOSS License Exception 포함)입니다. 학습과 개인 사용에는 문제가 없지만, 만든 프로그램을 상업적으로 배포할 계획이라면 라이선스 조건은 별도로 검토해야 합니다.

공식 라이선스 조건은 PyPI의 mysql-connector-python 페이지와 Oracle의 FOSS Exception 문서에서 확인할 수 있습니다.

 

파이썬에서 MySQL에 접속하는 순수 파이썬 드라이버로는 pymysql도 널리 쓰입니다.

설치가 간단하고 %s 방식의 파라미터 바인딩도 거의 같아서,

이 시리즈의 코드를 pymysql로 옮기는 것도 어렵지 않습니다.

 

 

두 라이브러리의 성격은 다음과 같이 갈립니다.

 

구분 Connector/Python (이 시리즈) pymysql
제공 주체 Oracle이 직접 만드는 공식 드라이버 커뮤니티 라이브러리 (공식 아님)
라이선스 GPLv2 (FOSS Exception) — 상업 배포 시 검토 필요 MIT — 배포가 훨씬 자유로움
신기능 대응 MySQL 신기능 대응이 빠르고 공식 문서에 통합 예제가 많고 커뮤니티에서 널리 쓰임
설치 pip install mysql-connector-python pip install pymysql

 

정리하면 기술적 우열보다는 성격 차이입니다.

이 강의는 공식 드라이버인 Connector/Python 하나로 진행하며,

pymysql은 "이런 대안도 있다" 정도로만 기억해 두면 충분합니다.

 

상업 배포까지 염두에 둔다면 MIT 라이선스인 pymysql이 마음 편한 선택이 될 수 있습니다.

 

 

 

 

3.3 언제 어떤 방식을 고를까

 

정리하면 세 가지 선택지는 상황에 따라 이렇게 나뉩니다.

 

상황 적합한 선택
파이썬 코드로 SQL을 직접 다루는 게 목적 (이 시리즈) Connector/Python 또는 pymysql
Qt의 모델·뷰(QSqlTableModel 등)와 화면을 직접 연결 QSqlDatabase (플러그인 빌드 감수)
서버를 여러 기기·팀이 공유하거나 배포 환경이 필요 AWS RDS 등 클라우드 (접속 도구는 위 드라이버 중 하나)

 

→ 다음 강의 (2강): 이번에 고른 Connector/Python으로, mainwindow.pymain.py로 나눈 프로젝트 구조를 세우고 실제 접속 폼과 연결 코드를 작성합니다.