flask09

SQLAlchemy·Î µ¥ÀÌÅͺ£À̽º CRUD¸¦ ½ÇÇàÇØ º»´Ù.
SQLite¿¡ row µ¥ÀÌÅ͸¦ »ý¼º (Input ¶Ç´Â Insert ) ÇÏ°Ô µÉ °ÍÀÌ´Ù.

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), nullable=False)
    username = db.Column(db.String(32), nullable=False)
    created_date = db.Column(db.DateTime(), nullable=False)

    #id´Â primary_keyÀÌ°í ÀÚµ¿ Áõ°¡ÇÑ´Ù, µû¶ó¼­ »ý¼ºÀÚ ¸Å°³º¯¼ö¿¡¼­ »©µµ µÈ´Ù.
    def __init__(self, userid, username, created_date):
        self.userid = userid
        self.username = username
        self.created_date = created_date

    @property
    def serialize(self):
        return {
            'id': self.id,
            'userid': self.userid,
            'username': self.username,
            'created_date': self.created_date
        }

¾Õ¿¡¼­ ½Ã¸®¾ó¶óÀÌ¡ ÇÒ¶§, »ý¼ºÀÚ°¡ ¿Ö ÇÊ¿äÇÑÁö ¸ô¶ú´Ù.
»ý¼ºÀÚ°¡ ¿Ö ÇÊ¿äÇÑÁö °ð ÀÌÀ¯¸¦ ¼³¸íÇÑ´Ù.

±×¸®°í, »ý¼ºÀÚ¸¦ ¸¸µé¶§, primary_keyµµ Æ÷ÇÔ ½ÃÅ°°í ÀÖ´Â ¿À·ù¸¦ ¹üÇß´Ù.
primary_keyÀÌ°í autoincrementÀÌ¸é »ý¼ºÀÚ ¸Å°³º¯¼ö¿¡ »©µµ µÈ´Ù.

C : row µ¥ÀÌÅÍ »ý¼º


def create_row():
    from model import User

    record = User(userid=32, username="aaa", created_date=datetime.datetime.now())
    db = model.db
    db.session.add(record)
    db.session.commit()

µ¥ÀÌÅͺ£À̽º¿¡ ÀÔ·ÂÇÒ row µ¥ÀÌÅ͸¦ »ý¼ºÇÑ´Ù.  »ý¼ºÀÚ¿¡ ¸Â°Ô²û µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÑ´Ù.
record = User(userid=32, username="aaa", created_date=datetime.datetime.now())

´ÙÀ½ ¸í·ÉÀ¸·Î µ¥ÀÌÅ͸¦ Ãß°¡ÇÑ´Ù.
commit ÇÔ¼ö¿¡ ÀÇÇØ º¯°æ »çÇ×ÀÌ Àû¿ëµÈ´Ù.
    db.session.add(record)
    db.session.commit()

R: row µ¥ÀÌÅÍ Àбâ

µ¥ÀÌÅ͸¦ Àоî¿À´Â ¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. °£´ÜÇÏ°Ô ÀÚÁÖ »ç¿ëµÇ´Â°Í¸¸ ¾ð±Þ ÇÏ°Ú´Ù.
query.get ÇÔ¼ö·Î ID¸¦ °¡Áø ·¹Äڵ带 ÀÐ¾î ¿Â´Ù.

query.filter("Äõ¸® Á¶°Ç").all ÇÔ¼ö´Â Á¶°Ç¿¡ ¸Â´Â ¸®½ºÆ®¸¦ °¡Á®¿Â´Ù.

query.filter("Äõ¸® Á¶°Ç").first ÇÔ¼ö´Â Á¶°Ç¿¡ ¸Â´Â ù¹ø° ·¹Äڵ带 °¡Á®¿Â´Ù.
Á¶°Ç¿¡ ÇØ´çµÇ´Â ¸®½ºÆ®°¡ ¾øÀ¸¸é 'None'À» ¸®ÅÏÇÑ´Ù.

for ·çÇÁ¹®¿¡¼­ ´Ù¸¥ Áõ°¡ º¯¼ö¸¦ Ãß°¡ ÇÒ·Á¸é enumerate¸¦ »ç¿ëÇÑ´Ù.

def read_row1():
    print('read_row1----------------------------------')
    user = User.query.get(2)
    print(user.username)


def read_row2():
    print('read_row2----------------------------------')
    #user_list = User.query.filter(User.username == 'bbb') °á°ú´Â ¾Æ·¡¿Í µ¿ÀÏÇÏ´Ù
    user_list = User.query.filter(User.username == 'bbb').all()
    for u in user_list:
        print(u)
        print(u.serialize)

    user = User.query.filter(User.username == 'king').first()
    if user == None:
        print('King is None')


def read_row3():
    print('read_row3----------------------------------')

    user_list = User.query.filter(User.username == 'bbb').all()
    for n, u in enumerate(user_list):
        print(u)
        print(f'number {n}: {u.serialize}')


def read_row4():
    print('read_row4----------------------------------')

    user_list = User.query.filter(User.username.like('%ap%')).all()
    for n, u in enumerate(user_list):
        print(u)
        print(f'number {n}: {u.serialize}')


U: row µ¥ÀÌÅÍ ¼öÁ¤

ÀÐ¾î ¿Â ·¹Äڵ带 ¼öÁ¤ÇÏ°í Ä¿¹ÔÇÏ¸é µ¥ÀÌÅÍ°¡ ¼öÁ¤ÀÌ µÈ´Ù.

def update_row():
    print('update_row----------------------------------')

    user1 = User.query.get(1)
    user1.username = "jung"

    user_kim = User.query.filter(User.username == 'kim').first()
    if user_kim != None:
        user_kim.username = 'park'
    db = model.db
    db.session.commit()


D: row µ¥ÀÌÅÍ »èÁ¦


ÀÐ¾î ¿Â ·¹Äڵ带 delete ÇÔ¼ö·Î »èÁ¦ÈÄ Ä¿¹ÔÇÏ¸é »èÁ¦ µÈ´Ù.

def delete_row():
    print('delete_row----------------------------------')

    db = model.db
    user_list = User.query.filter(User.username == 'aaa').all()
    for u in user_list:
        db.session.delete(u)
        db.session.commit()

DB ·¹ÄÚµå ´ýÇÁÇϱâ


import json
from flask import render_template, Blueprint

bp = Blueprint('main',
               __name__,
               url_prefix='/main')

from model import User


#URL : http://localhost:8888/main/dbdump
@bp.route('/dbdump')
def dodump():
    print("dbdump")

    user = User.query.get(2)

    print(user.serialize)
    response = json.dumps([user.serialize], default=str, ensure_ascii=False)
    return response


json.dump ÇÔ¼ö·Î ½Ã¸®¾ó¶óÀÌ¡ ÇÑ°ªÀ» ³Ñ°ÜÁÖ¸é µÈ´Ù.

½ÇÇà)


¼Ò½º)
main.py
model.py
controller/main_controller.py

Âü°í)
SQLAlchemy Query
https://engineer-mole.tistory.com/327