日本語ベースのflask関連の記事があんまりないのでまとめてみました〜
pythonはコード量も少なくてシンプルに書けるのでとても楽しいです!
完成物はこちら
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask.json import jsonify
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:@localhost/one-to-many'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
"""
データベースの作成手順は、
1.まず python コンソールで
from app import db でインポートして
2.one-to-manyのデータベースを作成する(直接mySqlで作るか、seqel proなどを使用すると楽です )
3.作成し終わったら、再びpython コンソールで
db.create_all() を叩いて完成!
"""
# class にクエリをまとめるととても綺麗になるのでオススメ
class Person(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
hobbies = db.relationship('Hobby', backref='person', lazy='dynamic')
"""
hobbiesではカラムが追加しているのではなく、Hobbyに対して関連性を設定
to_dict()メソッドはオブジェクトをjsonで返すためのメソッド
"""
def to_dict(self):
return {
'id': self.id,
'name': self.name,
# Personに紐づいているHobbyを全部出力
'hobby': [Hobby.to_dict(hobby) for hobby in self.hobbies]
}
class Hobby(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
person_id = db.Column(db.Integer, db.ForeignKey('person.id'))
def to_dict(self):
return {
'id': self.id,
'name': self.name,
}
@app.route('/')
def index():
return jsonify({"data": [Person.to_dict(person) for person in Person.query.all()]})
if __name__ == '__main__':
app.run()
特別なことはしていないので、もしわからないところがあれば比較的簡単に情報は見つかるのではないかと思います
データを適当にいれた後
実際に動かしてみるとこんな感じでデータが返ってきます!

参考にした動画

コメントを残す