6. Database
8강
8강
2026.07.098강 실습 중심 ⏱ 약 40분 0. 학습 목표→ 아이디·비밀번호로 로그인을 확인하고, 비밀번호를 안전하게 다루는 방법을 정리합니다.더보기0.1 이번 글에서 다룰 내용 이번 글은 실습 중심 강의이자 시리즈의 마지막입니다. 아이디와 비밀번호가 일치하는 사용자가 있는지 확인하는 로그인 기능을 만듭니다.\새로 보이지만, 로그인도 결국 WHERE 조건으로 한 건을 찾는 조회입니다. 그리고 지금까지 학습 편의를 위해 평문으로 다뤄 온 비밀번호를,실무에서는 왜 그렇게 저장하면 안 되는지와 어떻게 바꾸는지를 정리하며 시리즈를 마칩니다. 구분내용이해할 것로그인이 WHERE 조회라는 점, fetchone의 역할, 평문 저장의 위험만들 것로그인 입력칸·버튼과 check_login 메서드, 성공·실패 안내 0.2 이번 ..
7강
7강
2026.07.097강 실습 중심 ⏱ 약 30분 0. 학습 목표→ WHERE·LIKE로 이름의 일부만으로 사용자를 찾는 검색 기능을 만듭니다.더보기0.1 이번 글에서 다룰 내용 이번 글은 실습 중심 강의입니다. 6강의 전체 조회는 모든 사용자를 보여 줬습니다.이번에는 WHERE 조건과 LIKE 연산자로 이름의 일부만으로 원하는 사용자를 찾습니다. 6강의 표(QTableWidget)와 결과 채우기 방식을 그대로 재사용하므로,새로 배우는 것은 검색 조건을 만드는 부분뿐입니다. 검색어 역시 5강처럼 %s로 바인딩합니다. 구분내용이해할 것WHERE 조건과 LIKE 부분 검색, 검색어를 %s로 바인딩하는 이유만들 것검색어 입력칸·검색 버튼과 search_users 메서드, 빈 검색어 시 전체 조회 폴백 0.2 이번 강의 실습..
6강
6강
2026.07.096강 실습 중심 ⏱ 약 35분 0. 학습 목표→ users 테이블을 SELECT로 조회하고, 결과를 QTableWidget에 표로 표시합니다.더보기더보기0.1 이번 글에서 다룰 내용 이번 글은 실습 중심 강의입니다. 5강에서 저장한 데이터를 SELECT로 꺼내 화면에 보여 줍니다.결과는 여러 행이므로, 표 형태로 표시하는 QTableWidget을 새로 사용합니다. 지금까지의 INSERT와 달리 조회는 데이터를 바꾸지 않으므로 commit()이 필요 없다는 차이도 함께 확인합니다. 구분내용이해할 것SELECT와 fetchall()의 동작, 조회에 commit()이 필요 없는 이유만들 것조회 버튼과 QTableWidget, 결과를 표로 채우는 load_users 메서드 0.2 이번 강의 실습 내용 이번..
5강
5강
2026.07.095강 실습 중심 ⏱ 약 35분 0. 학습 목표→ users 테이블에 데이터를 넣고, 사용자 입력을 안전하게 전달하는 파라미터 바인딩을 익힙니다.더보기0.1 이번 글에서 다룰 내용 이번 글은 실습 중심 강의입니다. 4강에서 만든 users 테이블에 실제 데이터를 넣습니다.사용자가 입력한 이름과 비밀번호를 INSERT로 저장하는데,이때 값을 문자열로 직접 이어 붙이지 않고 %s로 전달하는 파라미터 바인딩을 사용합니다. 3강에서 "식별자는 검증"을 배웠다면, 이번에는 그 규칙의 나머지 절반인 "값은 바인딩"을 구현합니다.구분내용이해할 것INSERT 문의 구조, 문자열 조합이 위험한 이유, 파라미터 바인딩이 막아 주는 것만들 것이름·비밀번호를 입력받아 users에 저장하는 입력 폼과 insert_user 메서드..
4강
4강
2026.07.094강 실습 중심 ⏱ 약 35분 0. 학습 목표→ pyqtdb 안에 users 테이블을 만들고, 동작을 파일로 기록하는 로그 기능을 붙입니다.더보기0.1 이번 글에서 다룰 내용 이번 글은 실습 중심 강의입니다. 3강에서 만든 pyqtdb 안에 users 테이블을 만듭니다.이번에는 데이터베이스가 이미 존재하므로 database를 지정해 연결한다는 점이 3강과 다릅니다.또한 어떤 작업이 언제 실행됐는지 파일에 남기는 로그 기능을 추가해, 이후 강의에서 계속 재사용합니다. 구분내용이해할 것데이터베이스와 테이블의 관계, 테이블 생성 시 database를 지정해 연결하는 이유만들 것users 테이블을 만드는 버튼·메서드, 동작을 파일로 남기는 write_log_with_qt 0.2 이번 강의 실습 내용 이번 ..
3강
3강
2026.07.093강 실습 중심 ⏱ 약 30분 0. 학습 목표→ 2강 연결 코드에 데이터베이스를 새로 만드는 기능을 버튼 하나로 추가합니다.더보기0.1 이번 글에서 다룰 내용 이번 글은 실습 중심 강의입니다. 2강에서 만든 연결 코드는 그대로 두고,버튼 하나와 메서드 하나만 더해 CREATE DATABASE를 실행합니다. 기능을 추가하는 과정에서,왜 데이터 값은 %s로 안전하게 넘길 수 있는데 데이터베이스 이름 같은 식별자는 그럴 수 없는지를 함께 짚습니다. 이 구분은 5강의 SQL Injection 방지와 곧장 이어집니다. 구분내용이해할 것DB 생성 시에는 database를 지정하지 않고 연결하는 이유, 식별자에 %s를 못 쓰는 이유만들 것입력한 이름으로 데이터베이스를 생성하는 버튼과 create_database 메서..
2강
2강
2026.07.092강 실습 중심 ⏱ 약 40분 0. 학습 목표→ 프로젝트 구조를 세우고, MySQL 접속 정보를 입력받아 연결하는 PySide6 창을 만듭니다.더보기0.1 이번 글에서 다룰 내용 이번 글은 실습 중심 강의입니다. 1강에서 고른 Connector/Python으로 실제 코드를 작성합니다.먼저 프로젝트를 두 파일로 나누어 구조를 잡고, 접속 정보를 입력받아 MySQL 서버에 연결을 시도하는 창을 만듭니다.이때 사용하는 연결 패턴과 예외 처리 구조는 이후 모든 강의에서 그대로 재사용됩니다. 구분내용이해할 것연결 정보(host·user·password·database)의 구성, try-except-finally와 conn = None 패턴만들 것접속 정보를 입력받아 MySQL 연결을 시도하고 결과를 알려 주는 P..
1강
1강
2026.07.091강 개념 중심 ⏱ 약 25분 0. 학습 목표→ 파이썬으로 MySQL에 접속하는 방식의 차이를 이해하고, 이 시리즈가 어떤 도구를 왜 쓰는지 정리합니다.더보기0.1 이번 글에서 다룰 내용 이번 글은 개념 중심 강의입니다. 본격적으로 코드를 짜기 전에, 파이썬에서 MySQL에 접속하는 방식이 어떻게 나뉘는지부터 정리합니다.선택지를 먼저 이해해 두면, 다음 강의부터 나오는 접속 코드가 왜 지금 형태인지 자연스럽게 이해됩니다. 실제 접속 코드 구현은 2강에서 시작합니다. 구분내용이해할 것파이썬에서 MySQL에 접속하는 도구의 차이, 서버 위치(로컬·클라우드)의 의미정리할 것QSqlDatabase가 동작하지 않는 이유, 이 시리즈가 Connector/Python을 쓰는 근거 강의 흐름은 다음과 같습니다.접속 방..
2. Claude MCP & MySQL 환경설정
2. Claude MCP & MySQL 환경설정
2026.07.032강 실습 중심 ⏱ 약 60분 0. 학습 목표→ 설정 파일을 직접 작성해 Claude Desktop에 MySQL MCP 서버를 연결하고, 연결 성공을 화면에서 확인합니다.더보기0.1 이번 글에서 다룰 내용이번 글은 실습 중심 강의입니다. 1강에서 설치한 Claude Desktop에 이번에는 MySQL을 연결합니다. Claude가 MySQL에 직접 접속하는 것이 아니라, 중간에서 통역사 역할을 하는 MCP 서버를 실행하도록 설정 파일에 적어주는 작업입니다. 파일을 만들고, 접속 정보를 넣고, 앱을 재시작해 연결을 확인하는 순서로 진행합니다. [화면 캡처: Claude Desktop에 MySQL 도구가 연결된 화면]구분내용이해할 것설정 파일의 역할, 환경변수로 접속 정보를 전달하는 방식해볼 것설정 파일 작성..
1. Claude Desktop 설치
1. Claude Desktop 설치
2026.07.031강 실습 중심 ⏱ 약 20분 0. 학습 목표→ 우분투 24.04에서 Claude 데스크톱 앱을 직접 설치하고, 로그인해 첫 화면까지 열어봅니다.더보기0.1 이번 글에서 다룰 내용이번 글은 실습 중심 강의입니다. 브라우저로만 쓰던 Claude를 우분투에서 데스크톱 앱으로 설치해 봅니다.2026년 6월 30일부터 우분투·데비안용 공식 베타가 제공되므로, 이제 비공식 패키지 없이 Anthropic 공식 방식으로 설치할 수 있습니다. 터미널 명령을 하나씩 따라 입력하며 설치부터 로그인까지 순서대로 진행합니다.구분내용이해할 것데스크톱 앱과 웹의 차이, 설치 요구 사항, 앱 업데이트 방식해볼 것.deb 파일로 앱 설치, 계정 로그인, Chat·Cowork·Code 탭 확인 1. 설치 전에 알아두기→ 데스크톱 앱이..
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 접속 환경 강의 흐름은 다음과 같습..