flask와 sqlite3 연결



소개



Flask를 사용하여 1에서 응용 프로그램을 만들고 필요한 기술을 배울 수 있도록 정리하고 있습니다.
  • flask로 간단한 앱 만들기
  • Home 화면을 작성해 보기
  • 인증 기능 만들기
  • 데이터베이스를 사용해보십시오 ← ★ 현재 여기
  • CRUD 기능 만들기

  • database에 액세스



    데이터베이스 설치 및 설정



    이번에는 SQLite를 사용합니다.
    ※ mac는 기본적으로 설치되어 있습니다.
    ※ windows의 분은 여기 에서 인스톨 해 주세요.
    설정은 여기을 참조하십시오.
  • 설치 확인
  • $ sqlite3 -version
    3.28.0 ...
    

    또한 이번에 사용할 ORM(Object Relational Mapper)을 설치합니다.
  • SQLAlchemy 설치
  • # mac
    $ pip3 install Flask-SQLAlchemy
    
    # windows
    $ pip install Flask-SQLAlchemy
    
  • 초기 설정

  • src/__init__.py
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config["SECRET_KEY"] = b'_5#y2L"F4Q8z\n\xec]dasfe/'
    app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///flask_blog.db'
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
    
    db = SQLAlchemy(app)
    
    import src.views
    

    모델 정의



    이번 작성하는 것은 블로그이므로, 타이틀·본문이 있어, 투고 일시도 데이타베이스로 관리합니다.
    새로 src 디렉토리에 "models"를 만들고 "entires.py"를 만듭니다.

    src/models/entry.py
    from src import db
    from datetime import datetime
    
    
    class Entry(db.Model):
        __tablename__ = 'entries'
        id = db.Column(db.Integer, primary_key=True)
        title = db.Column(db.String(50), unique=True)
        text = db.Column(db.Text)
        create_at = db.Column(db.DateTime)
    
        def __init__(self, title=None, text=None):
            self.title = title
            self.text = text
            self.create_at = datetime.now()
    

    스크립트에서 공통 처리 실행



    마지막으로 모델에 정의한 내용을 데이터베이스에 반영합니다.
    데이터베이스에 대한 반응은 다음 두 가지가 있습니다.
    * 콘솔에서 실행
    * 스크립트에서 실행

    이번에는 스크립트에서 실행을 소개합니다. (이쪽은 실수가 일어나기 어렵고 실제의 개발 환경에서 자주 사용되고 있습니다.)

    먼저 스크립트를 실행하는 데 필요한 라이브러리를 설치합니다.
    # mac
    $ pip3 install Flask-Script
    
    # windows
    $ pip install Flask-Script
    

    실제 스크립트는 다음과 같습니다.

    manage.py
    import sys
    sys.dont_write_bytecode = True
    
    from flask_script import Command
    from flask_script import Manager
    
    from src import app
    from src import db
    
    class InitDB(Command):
        def run(self):
            db.create_all()
    
    if __name__ == '__main__':
        m = Manager(app)
        m.add_command('init_db', InitDB())
        m.run()
    
    

    작성한 스크립트 파일을 실행합니다.
    # mac 
    $ python3 manage.py init_db
    
    # windows
    $ python manage.py init_db
    

    실행 후 'src'디렉토리에 'flask_blog.db'라는 파일이 생성되었는지 확인할 수 있어야합니다.

    좋은 웹페이지 즐겨찾기