-
PYSIDE6 데이터베이스 작업PYTHON(파이썬)/PYSIDE6(GUI) 2024. 10. 24. 06:49728x90반응형
데이터베이스는 애플리케이션에서 데이터를 저장하고 관리하는 중요한 방법입니다. 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'PYTHON(파이썬) > PYSIDE6(GUI)' 카테고리의 다른 글
PYSIDE6 Matplotlib을 사용한 데이터 시각화 (0) 2024.10.25 PYSIDE6 멀티스레딩 (0) 2024.10.24 PYSIDE6 고급 모델 뷰 프로그래밍 (2) 2024.10.24 PYSIDE6 QT의 모델 뷰 아키텍처 (3) 2024.10.24 PYSIDE6 MVC 소개 (2) 2024.10.24