ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PYSIDE6 데이터베이스 작업
    PYTHON(파이썬)/PYSIDE6(GUI) 2024. 10. 24. 06:49
    728x90
    반응형

    데이터베이스는 애플리케이션에서 데이터를 저장하고 관리하는 중요한 방법입니다. Qt는 다양한 데이터베이스 시스템과 상호작용할 수 있는 여러 방법을 제공합니다. 이 장에서는 PySide6를 사용하여 데이터베이스와 연동하는 방법을 알아보겠습니다.

     

    #### 데이터베이스 연결 설정

    Qt `QSqlDatabase` 클래스를 사용하여 데이터베이스 연결을 관리합니다. 이 클래스는 다양한 데이터베이스 시스템(MySQL, PostgreSQL, SQLite )을 지원합니다.

     

    **SQLite 데이터베이스 연결 예제**

    ```python

    import sys

    from PySide6.QtWidgets import QApplication, QMainWindow, QMessageBox

    from PySide6.QtSql import QSqlDatabase

     

    def create_connection():

        db = QSqlDatabase.addDatabase("QSQLITE")

        db.setDatabaseName("example.db")

     

        if not db.open():

            QMessageBox.critical(None, "Database Connection", "Unable to establish a database connection.")

            return False

        return True

     

    app = QApplication(sys.argv)

     

    if not create_connection():

        sys.exit(1)

     

    window = QMainWindow()

    window.setWindowTitle("Database Example")

    window.show()

     

    app.exec()

    ```

    이 예제에서는 SQLite 데이터베이스에 연결합니다. 데이터베이스가 성공적으로 열리지 않으면, 오류 메시지를 표시하고 애플리케이션을 종료합니다.

     

    #### 데이터베이스 쿼리

    `QSqlQuery` 클래스를 사용하여 SQL 쿼리를 실행할 수 있습니다. 이 클래스는 데이터베이스에서 데이터를 검색, 삽입, 업데이트 및 삭제하는 데 사용됩니다.

     

    **SQL 쿼리 실행 예제**

    ```python

    from PySide6.QtSql import QSqlQuery

     

    def initialize_database():

        query = QSqlQuery()

        query.exec("CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)")

     

    def add_person(name, age):

        query = QSqlQuery()

        query.prepare("INSERT INTO people (name, age) VALUES (?, ?)")

        query.addBindValue(name)

        query.addBindValue(age)

        query.exec()

     

    initialize_database()

    add_person("John Doe", 30)

    add_person("Jane Smith", 25)

    ```

    이 예제에서는 데이터베이스에 `people` 테이블을 생성하고, 두 명의 사람 데이터를 삽입합니다. `QSqlQuery`를 사용하여 SQL 쿼리를 실행하고, `prepare` `addBindValue` 메서드를 사용하여 안전하게 데이터를 바인딩합니다.

     

    #### 데이터베이스에서 데이터 읽기

    데이터베이스에서 데이터를 읽으려면 `QSqlQuery` `exec` 메서드를 사용하여 쿼리를 실행하고, `next` 메서드를 사용하여 결과를 반복합니다.

     

    **데이터 읽기 예제**

    ```python

    def fetch_people():

        query = QSqlQuery("SELECT name, age FROM people")

        while query.next():

            name = query.value(0)

            age = query.value(1)

            print(f"Name: {name}, Age: {age}")

     

    fetch_people()

    ```

    이 예제에서는 `people` 테이블에서 이름과 나이를 선택하여 출력합니다. `query.next()`를 사용하여 각 결과 행을 반복합니다.

     

    #### QTableView와 데이터베이스 연동

    `QTableView` 위젯을 사용하여 데이터베이스의 데이터를 테이블 형식으로 표시할 수 있습니다. 이를 위해 `QSqlTableModel`을 사용하여 데이터베이스 테이블과 연동합니다.

     

    **QTableView 예제**

    ```python

    from PySide6.QtWidgets import QTableView

    from PySide6.QtSql import QSqlTableModel

     

    def setup_model_view():

        model = QSqlTableModel()

        model.setTable("people")

        model.select()

     

        view = QTableView()

        view.setModel(model)

        return view

     

    view = setup_model_view()

    view.show()

    ```

    이 예제에서는 `QSqlTableModel`을 사용하여 `people` 테이블과 연동하고, `QTableView`를 사용하여 데이터를 표시합니다.

     

    ### 결론

    이 장에서는 PySide6를 사용하여 데이터베이스와 연동하는 방법을 알아보았습니다. SQLite 데이터베이스 연결, SQL 쿼리 실행, 데이터 읽기 및 `QTableView`와의 연동을 다루었습니다. 데이터베이스를 사용하여 애플리케이션의 데이터를 효율적으로 관리할 수 있습니다. 다음 장에서는 네트워킹을 사용하여 데이터를 전송하고 수신하는 방법을 알아보겠습니다.

     

     

    728x90
Designed by Tistory.