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 |