[TIL] Python, Flask, SQLite

히끼·2024년 2월 15일

TIL

목록 보기
3/43

1. Python 에러?

  1. zsh: command not found: python : 아래 순서로 터미널에 명령어 입력하여 해결
    which python3
    // 결과로 나온 경로 복사
    echo "alias python=위에 나온 경로 붙여넣기" >> ~/.zshrc
    // 터미널 재실행 후 python 명령어 실행

2. Python 기초 문법

  1. 변수 & 기본연산variable.py
  2. 자료형 : 문자열, 숫자, 리스트, 딕셔너리 → datatype.py
  3. 조건문(if)if.py
    • if 뒤에 괄호 사용하지 않음
  4. 반복문(for)for.py
  5. 함수(function)func.py

3. Python 가상 환경과 패키지

가상환경 : 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경 (프로젝트별 공구함)

3-1. 가상 환경 만들기

  1. VS Code 에서 보기 > 명령 팔레트(command + shift + P) 실행
  2. env 검색 후 Python : Created Environment 찾아 클릭
  3. 가상 환경 선택지 중 Venv 클릭
  4. 파이썬 버전 선택 (나는 3.8.x로 선택)
  5. 가상 환경 생성 완료

가상 환경 확인하기

  1. 터미널 열어서 [+] 버튼 클릭 > (.venv) 폴더가 앞에 적혀있는지 확인
  2. 폴더 안에 .venv 폴더가 생성되었는지 확인
  3. VS Code 창 우측 하단에 ('.venv': venv) 표시되는지 확인

가상 환경 켜기 (안 켜진 경우에만)

터미널에 아래 코드 입력

source .venv/Bin/activate 

3-2. 패키지 (Package)

  1. 패키지 설치
    	pip install requests
  2. 패키지 불러오기
    	import requests

에러 : ModuleNotFoundError: No module named 'requests'
아래 코드를 터미널에 다시 입력

pip3 install --upgrade pip
pip install requests

4. 파이썬 웹 스크래핑

  1. 네이버 날씨 스크래핑 → weather.py
  2. 멜론 TOP100 스크래핑 → melon.py

5. Flask

  1. 가상 환경 생성 (위의 3-1 참조)
  2. Flask 라이브러리를 가상 환경에 설치
    pip install flask
  3. 기본 폴더 구조 만들기 (아래와 같이 생성)
    Flask 기본 폴더 구조

6. Flask 미니 프로젝트

  1. 로또 추천 사이트 (HTML 코드 보기)로또 추천 사이트
  2. 영화 검색 사이트 (HTML 코드 보기)영화 검색 사이트
  3. 일별 박스오피스 검색 사이트 (HTML 코드 보기)일별 박스오피스 검색 사이트
  4. 위 3개 사이트의 서버 코드 보기
  5. 멜론 TOP100 차트를 카드 형태로 보여주기 (클라이언트 + 서버 코드 보기)멜로디쉐어 + 멜론 TOP100

request.args.get() 사용 시, 받아온 값이 없는 경우

아래와 같이 default_value를 설정하여 해결 가능

value = request.args.get('parameter_name', 'default_value')

날짜를 연월일 8자리(YYYYMMDD) 형태로 입력하지 않은 경우 제출을 막고 경고창 띄우기

경고창 띄우기

<!-- 생략 -->
<body>
  <!-- 생략 -->
  <form id="dateForm" , action="{{ url_for('boxoffice') }}">
    <input type="text" name="query" id="dateInput" required>
    <button type="submit">검색</button>
  </form>
  <!-- 생략 -->
  
  <script>
    document.getElementById('dateForm').addEventListener('submit', function (event) {
    	var dateInput = document.getElementById('dateInput').value;
    	if (!isValidDate(dateInput)) {
                event.preventDefault(); // Prevent form submission
                alert('날짜를 8자리로 입력해 주세요. (예: 20230601)'); // Show alert message
    	}
    });

    function isValidDate(dateString) {
    	// Regular expression to match YYYYMMDD format
    	var regex = /^\d{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$/;
    	return regex.test(dateString);
    }
  </script>
</body>
</html>

img 태그의 src에 Flask 서버에서 가져온 데이터를 넣을 때

<img src="{{ image_path }}" alt="">

7. Flask 프로젝트 시작을 위한 초기 세팅

  1. 기본 폴더 구조를 만든다.
  2. 가상 환경(.venv)을 설치한다.
  3. 터미널에서 가상 환경에 flask를 설치한다.
    pip install flask
    원하는 라이브러리 확인은 아래 방법으로 함
    pip list

8. SQLite 설치 (VS Code)

  1. VS Code Extension에서 SQLite3 Editor 설치
    SQLite3 Editor

  2. 폴더에 database.db 파일 생성

  3. 파일 위에서 우클릭 > 연결 프로그램

  4. '*.db'에 대한 기본 편집기 구성 클릭

  5. SQLite3 Editor 클릭

  6. 설치 완료되었는지 확인
    database.db

  7. database.db 파일 삭제


9. SQLAlchemy로 Database 연결하기

  1. 가상 환경 설치

  2. 가상 환경에 Flask-SQLAlchemy 패키지 설치

    pip install Flask-SQLAlchemy
  3. 폴더 및 파일 생성
    DB 폴더 구조

  4. app.py에 Flask와 Database 연결 코드 작성

    from flask import Flask
    import os
    from flask_sqlalchemy import SQLAlchemy
    
    basedir = os.path.abspath(os.path.dirname(__file__))
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] =\
        'sqlite:///' + os.path.join(basedir, 'database.db')
    
    db = SQLAlchemy(app)
  5. app.py에 데이터베이스 모델 정의 (설계도 만들기)

    class Song(db.Model):
    	id = db.Column(db.Integer, primary_key=True)
    	username = db.Column(db.String, nullable=False)
    	artist = db.Column(db.String, nullable=False)
    	title = db.Column(db.String, nullable=False)
    	image_url = db.Column(db.String, nullable=False)
    
    	def __repr__(self):
        	return f'{self.artist} {self.title} 추천 by {self.username}'
    
    with app.app_context():
    	db.create_all()
  6. Database 만들기 (터미널에 입력) (Song은 예시)

    flask shell
    from app import db, Song
    db.create_all()

10. Python으로 데이터베이스 조작하기

터미널에 flask shell 켜져있는지 확인하고 진행!
종료는 exit() 입력

  1. Database에 데이터 저장하기 (터미널 입력)

    song = Song(username="추천자", title="노래제목", artist="가수", image_url="이미지 주소") # 데이터 만들기
    db.session.add(song) # DB에 업로드
    db.session.commit() # DB에 저장
  2. Database에 여러 데이터 저장하기

    song1 = Song(username="추천자", title="노래제목1", artist="가수1", image_url="이미지 주소1")
    song2 = Song(username="스파르타", title="노래제목2", artist="가수2", image_url="이미지 주소2")
    song3 = Song(username="스파르타", title="노래제목3", artist="가수3", image_url="이미지 주소3")
    db.session.add(song1)
    db.session.add(song2)
    db.session.add(song3)
    
    db.session.commit()
  3. 데이터 조회하기

    테이블명.query.all()
  4. 특정 조건으로 데이터 가져오기

    # 조건에 맞는 데이터 모두 가져오기
    테이블명.query.filter_by(조건).all()
    
    # 조건에 맞는 데이터 1개만 가져오기
    테이블명.query.filter_by(조건).first()
  5. 데이터 수정하기

    변수명 = 테이블명.query.filter_by(조건).first()
    변수명.컬럼명 = '변경할 내용'
    db.session.add(변수명)
    db.session.commit()
  6. 데이터 삭제하기

    변수명 = 테이블명.query.filter_by(조건).first()
    db.session.delete(변수명)
    db.session.commit()

0개의 댓글