[python] PyQt에서의 데이터베이스 연동

PyQt는 Python으로 GUI 애플리케이션을 개발하기 위한 강력한 도구입니다. 이 중에서도 PyQt에서의 데이터베이스 연동은 매우 유용하며 데이터베이스와 직접적으로 상호작용하는 애플리케이션을 개발할 수 있습니다. 이번 포스트에서는 PyQt에서 데이터베이스를 연동하는 방법을 알아보겠습니다.

데이터베이스 모듈 설치

PyQt에서 데이터베이스를 사용하기 위해서는 해당 데이터베이스와의 연동을 위한 모듈을 설치해야 합니다. 예를 들어, MySQL 데이터베이스를 사용한다면 PyMySQL 모듈을 설치해야 합니다. 다음은 pip 명령어를 사용하여 PyMySQL을 설치하는 예시입니다.

pip install PyMySQL

데이터베이스 연결

PyQt에서 데이터베이스를 연결하기 위해서는 QSqlDatabase 클래스를 사용해야 합니다. 이를 이용하여 데이터베이스에 연결하는 코드는 다음과 같습니다.

from PyQt5.QtSql import QSqlDatabase

def createConnection():
    db = QSqlDatabase.addDatabase("QMYSQL")
    db.setHostName("localhost")
    db.setDatabaseName("mydatabase")
    db.setUserName("username")
    db.setPassword("password")
    if db.open():
        print("Connected to database")
    else:
        print("Database connection failed")

위 코드에서는 QSqlDatabase.addDatabase 메소드를 사용하여 데이터베이스 타입을 지정하고, setHostName, setDatabaseName, setUserName, setPassword 메소드를 사용하여 연결할 데이터베이스의 호스트, 이름, 사용자 이름, 패스워드를 설정합니다. open 메소드를 호출하여 데이터베이스와 연결을 시도하고, 성공 여부에 따라 메시지를 출력합니다.

쿼리 실행

데이터베이스에 연결된 후에는 쿼리를 실행하여 데이터를 가져오거나 업데이트할 수 있습니다. QSqlQuery 클래스를 사용하여 쿼리를 실행하는 코드는 다음과 같습니다.

from PyQt5.QtSql import QSqlQuery

def executeQuery():
    query = QSqlQuery()
    query.exec("SELECT * FROM mytable")
    while query.next():
        name = query.value("name")
        age = query.value("age")
        print(name, age)

위 코드에서는 QSqlQuery 객체를 생성한 후 exec 메소드를 사용하여 쿼리를 실행합니다. SELECT 문을 실행하여 결과를 가져온 후 next 메소드를 사용하여 결과를 한 줄씩 읽어옵니다. 필요한 컬럼의 값을 value 메소드를 사용하여 가져올 수 있습니다.

결론

이번 포스트에서는 PyQt에서의 데이터베이스 연동 방법을 알아보았습니다. 데이터베이스 모듈 설치 방법부터 연결 및 쿼리 실행까지의 예제 코드를 제공했습니다. 이를 기반으로 PyQt 애플리케이션에서 데이터베이스와의 상호작용을 구현할 수 있습니다.

참고 자료