1. 간략 비교

더보기
MySQL 연동 방법  설명 실제 동작 위치
MySQL Connector/Python Python 에서 MySQL 서버와 직접 통신에 필요한 기능을제공하는 범용 연결 도구 Python 가상 환경
(pip로 설치)
QSqlDatabase(PySide6/QtSql) (Qt GUI 전용) Qt에서 제공하는 DB 연결 도구
Qt GUI와 데이터 바인딩 가능한 Model 제공
Qt PySide6 런타임 내부
AWS RDS(MySQL) AWS 가 제공하는 클라우드형 MySQL 서버
MySQL 서버 자체가 클라우드에 존재하는 형태
AWS 클라우드 상
(EC2와 별도)

 


 

2. 로컬 MySQL + MySQL Connector/Python 예제

더보기

2.1 라이브러리 설치

pip install mysql-connector-python

 

2.2 간단 사용 예제 

import mysql.connector

conn = mysql.connector.connect(            # (1) MySQL 서버에 연결
    host="127.0.0.1",
    user="root",
    password="1234",
    database="testdb"
)

cursor = conn.cursor()                    # (2) Cursor 생성 (SQL 실행에 필요한 도구)

cursor.execute("SELECT 'Hello MySQL!'")   # (3) SQL 실행 요청 → MySQL 서버에서 처리

result = cursor.fetchone()                # (4) 서버가 반환한 결과(한 행) 가져오기

print(result)                             # (5) Python에서 결과 사용

cursor.close()                            # (6) Cursor 종료
conn.close()                              # (7) MySQL 서버 연결 종료

단, 이 코드는 testdb가 반드시 존재해야만 실행됩니다.



3. AWS RDS(MySQL) + MySQL Connector/Python 예제

더보기
import mysql.connector

# (1) AWS RDS MySQL 서버에 연결
conn = mysql.connector.connect(
    host="mydb.abcd1234.ap-northeast-2.rds.amazonaws.com",  # RDS Endpoint
    port=3306,                                               # 기본 포트
    user="admin",                                            # 계정명
    password="mypassword",                                   # 비밀번호
    database="testdb"                                        # 사용할 DB
)

cursor = conn.cursor()                                      # (2) Cursor 생성

cursor.execute("SELECT 'Hello from AWS RDS MySQL!'")        # (3) SQL 실행
result = cursor.fetchone()                                  # (4) 결과 1행 가져오기

print(result)                                               # (5) 결과 출력

cursor.close()                                              # (6) Cursor 종료
conn.close()                                                # (7) DB 연결 종료

 

4. 로컬 MySQL + QSqlDatabase 예제

더보기
from PySide6.QtSql import QSqlDatabase, QSqlQuery

db = QSqlDatabase.addDatabase("QMYSQL")   # (1) QSqlDatabase 생성 + MySQL 드라이버 선택

db.setHostName("127.0.0.1")               # (2) MySQL 서버 주소 설정
db.setUserName("root")                    # (3) 사용자 계정 설정
db.setPassword("1234")                    # (4) 비밀번호 설정
db.setDatabaseName("testdb")              # (5) 사용할 데이터베이스 선택

db_open = db.open()                       # (6) MySQL 서버 연결 시도

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

query = QSqlQuery()                       # (7) SQL 실행 객체 생성 (Cursor 역할)

query.exec("SELECT 'Hello MySQL from QSqlDatabase!'")  # (8) SQL 실행 요청

query.next()                              # (9) 결과 집합의 첫 행(row)으로 이동
result = query.value(0)                   # (10) 첫 번째 컬럼 값 가져오기

print(result)                             # (11) Python에서 결과 사용

db.close()                                # (12) MySQL 서버 연결 종료

 

DB 연결 실패: Driver not loaded Driver not loaded PySide6 안에 QMYSQL 드라이버가 없어서, MySQL을 Qt 방식으로 쓸 수 없는 상태입니다.

 

즉, 코드가 틀린 게 아니라 MYSQL 환경(플러그인)이 없는 것입니다.

 


 

Qt & MySQL 라이센스 문제 

 

Qt/PySide6

  • LGPL 라이센스
  • 라이브러리를 사용하는 애플리케이션은 소스 공개 의무 없음
  • 소스 공개 없이 상업 배포 가능
  • 예시) 나의 개인 유튜브 강의 채널

MySQL

  • GPL 라이센스
  • 코드를 포함하거나 연결하면 해당 소프트웨어 전체를 GPL로 공개 배포해야 함
  • 상업적 사용 가능하지만 소스 전체 공개 필요
  • 예시) 유명 스타 강사의 공개 강의 영상

예시) Qt/PySide6 가 개인 유투브 강의 채널로, MySQL(유명 스타 강사의 공개 강의 영상)을 사용하려면

내 채널의 수익을 포기하거나 나의 강의도 공짜로 보이게 해야 하는 리스크가 존재합니다.

 

해결방법 - MySQL( 유명 스타 강사의 공개 강의 영상)을 보는 방법, 즉 Qt/PySide6 플러그인으로 MySQL 연결하는 기능과사용 방법은 알려줄께, 하고 싶으면 사용자(개발자)가 직접 해라.

 

 

 

기술·의존성 관점: OS마다 설치방식이 전부 다르다

 

1) MySQL Client는 OS·버전에 따라 설치 방식이 다름

  • Windows:
    • MySQL Server 설치 위치, Connector/C 설치 위치, PATH 설정, 32/64bit 구분…
  • Linux:
    • libmysqlclient.so 패키지가 배포판마다 이름이 다르고,
      심지어 MariaDB 라이브러리로 대체되어 있는 경우도 많습니다.
  • macOS:
    • Homebrew, MacPorts, DMG 설치 등 설치 루트가 제각각.

만약 Qt/PySide6가 “모든 플랫폼에서 MySQL Client까지 포함”하려면:

  • 각 OS별 MySQL 라이브러리 바이너리를 모아서
  • Qt/PySide6 내부 빌드와 ABI를 맞추고
  • 배포할 때 설치 환경, PATH, 충돌 여부까지 책임져야 합니다.

이건 현실적으로 유지보수 지옥입니다.

 

그래서 이와 같은 이유로, Qt 쪽 기본 정책은 간단합니다

필요한 사람은 당신 환경에 맞게 빌드해서 qsqlmysql.dll을 만들어 써라”라는 구조입니다

 

설정 방법은,

1. MySQL C/C++ Client 라이브러리(libmysql) 설치

2. Qt의 QMYSQL 플러그인(qsqlmysql.dll)을 빌드

3. 빌드 결과 파일 위치 PySide6 프로젝트 가상환경으로 복사

(4. 테스트 순서)