flask05

Çöó½ºÅ©¿¡¼­ DB¸¦ »ç¿ëÇϱâ À§ÇØ SQLAlchemy¸¦ ¾Ë¾Æº»´Ù.
¿©±â¼­´Â Å×À̺íÀ» »ý¼ºÇÑ´Ù.

SQLAlchemy´Â ORM(Object-relational mapping)À¸·Î µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÑ´Ù.
±×·¡¼­, SQL Äõ¸®¾øÀÌ °´Ã¼¸¦ ÅëÇØ µ¥ÀÌÅͺ£À̽º¸¦ Á¶ÀÛ ÇÒ ¼ö ÀÖ´Ù.

model.py ÆÄÀÏ
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key = True, autoincrement=True)
    userid = db.Column(db.String(32))
    username = db.Column(db.String(32))
    created_date = db.Column(db.DateTime(), nullable=True)

SQLAlchemy °´Ã¼¸¦ »ý¼º ÇÑ´Ù.

db.ModelÀ» ¹«Á¶°Ç ¸Å°³º¯¼ö(ÆĶó¸ÞÅÍ)·Î ÇÑ´Ù.
db°ªÀ» º¯¼ö¿¡ ´ëÀÔÇÑ´Ù. 

Å×À̺í À̸§À» º°µµ·Î ÁöÁ¤ ÇÏÁö ¾ÊÀ¸¸é Ŭ·¡½º À̸§ÀÌ Å×À̺í À̸§ÀÌ µÈ´Ù.
"__table_name__"À¸·Î ¸í½ÃÀûÀ¸·Î ÁöÁ¤ ÇÒ¼öµµ ÀÖ´Ù.

¿ÞÂÊÀÇ º¯¼ö ¸íÀÌ DB¿¡¼­ Çʵå À̸§ÀÌ µÈ´Ù.

main.py ÆÄÀÏ
from flask import Flask
import model


def create_app():
    app = Flask(__name__)
    return app


def set_database(app):
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS']= False   # True´Â ¸Þ¸ð¸®¸¦ ¸¹ÀÌ »ç¿ëÇϱ⠶§¹®¿¡ False·Î ÇÔ

    db = model.db
    db.init_app(app)
    db.app = app
    db.create_all() #DB ¾øÀ¸¸é »ý¼º


if __name__ == '__main__':
    app = create_app()
    set_database(app)

    app.run(host='0.0.0.0', port=8888, debug=True)

DB¸¦ ¸ÅÇÎÇÑ model.py ÆÄÀÏÀ» ÀÓÆ÷Æ® ÇÑ´Ù.
import model

set_database ÇÔ¼ö¿¡¼­ DB¸¦ ¼³Á¤ÇÑ´Ù.

µ¥À̺£À̽º ÆÄÀÏ À̸§À» URI Çü½ÄÀ¸·Î ÁöÁ¤ÇÑ´Ù.
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'

SQLALCHEMY_TRACK_MODIFICATIONS´Â Ãß°¡ÀûÀ¸·Î ¸¹Àº ¸Þ¸ð¸®¸¦ ÇÊ¿ä·Î Çϱ⠶§¹®¿¡ ²¨µÐ´Ù.
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']= False

SQLAlchemy °´Ã¼¸¦ ÃʱâÈ­ ÇÑ´Ù, SQLAlchemy °´Ã¼¸¦ Çöó½ºÅ©¿¡ µî·Ï ÇÑ´Ù.
db.init_app(app)

model.py¿¡¼­ db = SQLAlchemy(app)¸¦ ¾ÈÇ߱⠶§¹®¿¡, ¿©±â¼­ app¸¦ ÂüÁ¶ ÇÑ´Ù.
db.app = app

Å×À̺íÀÌ ¾øÀ¸¸é Å×ÀÌºí ½ºÅ°¸¶¸¦ »ý¼ºÇÑ´Ù.
db.create_all()

Å×À̺íÀÌ Àß »ý¼º µÇ¾ú´ÂÁö È®ÀÎ ÇÒ·Á¸é "db browser for sqlite" ÇÁ·Î±×·¥À» ´Ù¿î·Îµå ¹Þ¾Æ¼­ È®ÀÎÇÑ´Ù.
"db browser for sqlite" ´Ù¿î·Îµå: https://sqlitebrowser.org/dl/

Âü°í)
https://dubaiyu.tistory.com/179