6. Database/6.1 MySQL
8. 로그인
8. 로그인
2025.12.151. 목표더보기이 단계의 학습 목표기존 1~6단계 통합 예제에 로그인 확인 기능을 자연스럽게 확장해서 붙이기QLineEdit 비밀번호 모드와 QPushButton을 활용해 로그인 UI 만들기SELECT ... WHERE 조건문으로 사용자 아이디/비밀번호를 검사하는 로직 구현로그인 성공/실패를 QLabel, QMessageBox로 사용자에게 명확하게 피드백하기이미 구현한 MySQL 연결 예외 처리, 로그 기록 함수(handle_mysql_error, write_log_with_qt)를 재사용해 일관된 구조 유지이제 최종 통합 GUI는 다음 기능을 한 창에서 모두 처리합니다.1단계: MySQL 서버 연결 테스트2단계: 데이터베이스 생성3단계: users 테이블 생성4단계: 사용자 추가(INSERT)5단계: ..
7. Data 검색
7. Data 검색
2025.12.151. 목표더보기WHERE 조건문을 사용해 특정 사용자만 골라서 조회하는 방법을 익힌다.LIKE 연산자를 사용해 부분 검색 기능을 구현한다.검색어를 입력하는 QLineEdit와 검색 버튼(QPushButton)으로 검색 UI를 구성한다.검색 결과를 기존 QTableWidget에 다시 채워 넣어, 전체 조회와 검색 조회를 모두 지원한다.검색 실패, 접속 실패 등 예외 상황에서 적절한 메시지를 띄우고 로그를 남기는 흐름을 이해한다. 2. 전체 로직더보기import sysfrom PySide6.QtWidgets import ( QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, ..
6. Data 조회
6. Data 조회
2025.12.151. 목표더보기PySide6 폼에서 SELECT 문으로 users 데이터를 조회한 뒤, QTableWidget에 행 단위로 표시한다.QAbstractItemView 열거형을 사용해서 행 단위 선택, 읽기 전용 테이블을 설정하는 방법을 익힌다.오류 발생 시 QMessageBox와 QLabel, QFile + QTextStream으로 사용자 메시지와 로그를 남기는 흐름을 이해한다. 2. 전체 로직더보기1단계: 연결 테스트2단계: 데이터베이스 생성3단계: users 테이블 생성import sysfrom PySide6.QtWidgets import ( QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, Q..
5. Data 삽입
5. Data 삽입
2025.12.151. 목표더보기이 단계의 학습 목표QLineEdit, QPushButton을 사용해 간단한 입력 폼을 구성할 수 있다.MySQL INSERT SQL 문을 이해하고 직접 작성할 수 있다.파라미터 바인딩을 사용해 SQL Injection을 방지할 수 있다.PySide6의 QMessageBox로 성공, 실패 메시지를 표시할 수 있다.QFile, QTextStream을 사용해 삽입 로그를 파일로 남길 수 있다.전제 조건데이터베이스 pyqtdb가 이미 생성되어 있다.pyqtdb 안에 users 테이블이 이미 생성되어 있다.(id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(150), password VARCHAR(150)) 2. 전체 로직더보기import sysfrom ..
4. Table 생성
4. Table 생성
2025.12.151. 목표더보기데이터베이스와 테이블의 차이를 구분할 수 있다.MySQL 클라이언트에서 USE, CREATE TABLE, SHOW TABLES, DESCRIBE 기본 명령을 사용할 수 있다.users 테이블 구조를 설계한다.id, username, password 컬럼과 타입 의미를 이해한다.PySide6 애플리케이션에서 버튼 클릭으로 users 테이블을 생성하는 코드를 작성하고,MySQL 수업에서 사용한 모델링과 비교하여 학습한다.QFile, QTextStream으로 테이블 생성 로그를 남겨 보고, MySQL 클라이언트로 테이블이 생성되었는지 확인한다.이후 단계인 데이터 INSERT, SELECT에서 이 users 테이블을 재사용할 수 있는 기반을 만든다. 2. 전체 로직더보기1단계: 연결 테스트2단계:..
3. DB 생성
3. DB 생성
2025.12.121. 목표더보기mysql.connector를 사용해 MySQL 서버에 접속한 뒤 데이터베이스를 생성하는 기본 흐름을 이해한다.PySide6 GUI 에서 데이터베이스 이름을 입력받아 CREATE DATABASE를 실행하는 기능을 구현한다.try ~ except ~ mc.Error 패턴으로 예외를 처리하는 방법을 익힌다.생성 성공과 실패를 QLabel, QMessageBox로 사용자에게 안내하는 패턴을 익힌다.1단계에서 만든 host, user, password 입력 UI 구조를 그대로 활용하여 단계별 확장 구조를 학습한다. 2. 전체 로직더보기# ...class MySqlDemoWindow(QWidget): def __init__(self, parent=None): super().__in..
2. DB 연결
2. DB 연결
2025.12.121. 목표더보기MySQL Connector/Python 라이브러리 설치 방법을 이해하고 직접 설치해 본다.host, user, password, database로 구성되는 MySQL 연결 문자열 개념을 이해한다.PySide6로 간단한GUI 설정 창을 만들고 MySQL 접속 정보를 입력받는다.mysql.connector를 사용해 MySQL 서버 및 선택한 데이터베이스에 연결해 본다.try except 예외처리 사용해서 예외를 안전하게 처리하는 패턴을 익힌다.QLabel과 QMessageBox로 연결 성공, 실패, 오류를 한글로 안내하는 방법을 복습힌다. 2. 전체 로직더보기import sysfrom PySide6.QtWidgets import ( QApplication, QWidget, Q..
1. DB 연동 개요
1. DB 연동 개요
2025.12.121. 간략 비교더보기MySQL 연동 방법 설명 실제 동작 위치 MySQL Connector/PythonPython 에서 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-pyt..
2. MySQL 환경설정
2. MySQL 환경설정
2025.07.092강 실습 중심 ⏱ 약 50분 0. 학습 목표→ Workbench 작업 환경을 정리하고, 샘플 DB(employees)를 넣은 뒤, 다른 PC에서 이 서버로 원격 접속하는 상태까지 만듭니다.더보기0.1 이번 글에서 다룰 내용이번 글은 실습 중심 강의입니다. 1강에서 설치한 MySQL과 Workbench를 실제 수업에서 쓸 수 있는 상태로 만듭니다.폰트를 바꿔 SQL 가독성을 높이고, 실습에 쓸 샘플 데이터베이스를 넣고,마지막으로 "내 PC의 MySQL에 옆자리 PC에서 접속"하는 원격 연결을 완성합니다.원격 연결은 이후 Server-Client 수업과 PySide6 앱 개발의 기반이 됩니다.구분내용이해할 것bind-address의 의미, 방화벽(ufw)과 포트의 관계, root 원격 접속이 막혀 있는 이..
1. MySQL, Workbench 설치
1. MySQL, Workbench 설치
2025.07.041강 실습 중심 ⏱ 약 40분 0. 학습 목표→ 우분투에 MySQL 서버를 설치하고, root 계정에 비밀번호를 설정해 Workbench로 접속하는 상태까지 만듭니다.더보기0.1 이번 글에서 다룰 내용이번 글은 실습 중심 강의입니다. Ubuntu 24.04 LTS 기본 저장소(MySQL 8.0) 기준으로 진행합니다.설치 자체보다 학생들이 실제로 막히는 지점 — 설치가 꼬였을 때의 완전 삭제, root 계정에 비밀번호로 접속이 안 되는 이유(auth_socket) — 를 함께 다룹니다.구분내용이해할 것완전 삭제가 필요한 이유, auth_socket과 비밀번호 인증의 차이, ERROR 1698의 원인만들 것비밀번호 인증으로 접속 가능한 MySQL 서버 + Workbench 접속 환경 강의 흐름은 다음과 같습..
01 DBMS
01 DBMS
2024.01.13개발자 관점에서 Database와 DBMS 개념을 이해합니다. Program의 구성요소 Prgram 은 Data와 Logic단, 두 가지 요소로 이루어진다. 모든 프로그래밍 언어는Data를 저장하는 기술과 Data를 처리하는 로직만 존재한다. File System vs Database System File System 프로그램이 실행되기 이전의 Data는 어떻게 관리되어야 할까요?C/C++ 프로그래밍 언어에서는 Data를 File 형태로 처리하는 방식을 먼저 배웁니다. 하지만, File 입출력으로 데이터를 다룬다면, 중복된 데이터를 관리하는 로직이 필요합니다.만약 데이터를 공유한다면, 접근 계정을 관리하고, 동시 접속 문제를 해결 할 로직도 필요합니다.그리고 각종 보안, 백업, 복구 등의 문제를..