【Flask】電子掲示板を作る~③電子掲示板のデータベースを構築する~
スポンサードリンク
おはようございます。Shotaです。
今日は昨日に引き続き、PythonのFlaskを用いた簡単なWebアプリの作り方について解説していきます。
今日の記事では、電子掲示板のデータベースを構築する方法について解説します。
データベースを作る
電子掲示板に投稿した内容をたくさん保存するため、データベースを用意しておきましょう。今回作る電子掲示板では、次のようなデータを作っておきたいと思います。
- id:投稿したデータを識別するために必要。整数で表現される。
- user:投稿者の名前。
- title:投稿する情報のタイトル。
- detail:投稿する情報。
- post_date:投稿した日付。
主に上記の項目を中心にデータベースを作っていこうと思います。
また、データベースには様々な種類がありますが、今回はSQLiteを使います。(SQLiteに関しては、また後日詳細に解説していきます。)
それでは、実際にプログラムを書いてデータベースを作っていきましょう。
Pythonファイル
まず最初に、「main.py」を以下のコードに書き換えてください。
from flask import Flask, render_template from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///postdata.db' db = SQLAlchemy(app) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run(debug=True)
コードを増やした部分だけピックアップすると、以下のとおりです。
from flask_sqlalchemy import SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///postdata.db' db = SQLAlchemy(app)
このflask_sqlalchemy
は、Flaskと一緒にインストールしておいたライブラリです。これを使うと、Pythonオブジェクトのようにデータベースを簡単に扱うことができます。
実際に、データベースに追加する項目を定義していきましょう。以下のコードを「main.py」に追加します。
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) user = db.Column(db.String(20), nullable=False) title = db.Column(db.String(30), nullable=False) detail = db.Column(db.Text, nullable=False) post_date = db.Column(db.DateTime, nullable=False)
Pythonファイル「main.py」の全体像は以下の通りになります。
from flask import Flask, render_template from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///postdata.db' db = SQLAlchemy(app) class Post(db.Model): id = db.Column(db.Integer, primary_key=True) user = db.Column(db.String(20), nullable=False) title = db.Column(db.String(30), nullable=False) detail = db.Column(db.Text, nullable=False) post_date = db.Column(db.DateTime, nullable=False) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run(debug=True)
プログラムの説明
それでは、今日の記事で紹介したプログラムを詳細に説明していきましょう。
データベースのURI設定
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///postdata.db' db = SQLAlchemy(app)
このように書くことで、postdata.db
という名前のデータベースを作っています。その後で、SQLAlchemy
クラスに変数appを入れて、変数dbに格納していきます。
データベースの項目定義
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) user = db.Column(db.String(20), nullable=False) title = db.Column(db.String(30), nullable=False) detail = db.Column(db.Text, nullable=False) post_date = db.Column(db.DateTime, nullable=False)
データベースで扱う項目は、Pythonのクラスオブジェクトで定義することができます。
それぞれの項目は、以下のように設定しました。(詳細は「python sqlite3」とググってください)
- id:整数値で設定。
- user:20文字以内の文字列で設定。空欄にできない。
- title:30文字以内の文字列で設定。空欄にできない。
- detail:テキスト形式の文字列で設定。空欄にできない。
- post_date:日付型で設定。空欄にできない。
ここまで書けたら、今定義したデータベースを作成していきます。
VSCodeでターミナルを開いて、Python型の対話シェルを起動しましょう。ターミナルを開いたら、
python
この文字列を入力します。
そして、以下の順番に入力していきます。
from main import db db.create_all()
このように入力すると、ターミナルに以下の文字列が出力されると思います。これが出力されたら無事にデータベースができたことを意味しています。
C:\Users\autho\anaconda3\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. warnings.warn(FSADeprecationWarning(
これで無事にデータベースを作成できましたので、ターミナルを閉じます。
まとめ
今日の記事では電子掲示板のデータベースを構築する方法について徹底解説しました。
今日の記事でデータベースに関する内容について触れましたが、詳細は以下のWebサイトをご覧ください。(英語ですが、ブラウザの翻訳機能を利用してください)
今日の記事はこれで終了です。
【参考サイト】