flaskとsqlite3の接続
はじめに
Flaskを使用して1からアプリケーションを作り、必要な技術を学んでいただけるようにまとめています。
- flaskによる簡易アプリの作成
- Home画面を作成してみる
- 認証機能を作成してみる
- データベースを使用してみる ← ★現在ここ
- CRUD機能を作成してみる
databaseにアクセス
データベースのインストール・設定
今回はSQLiteを使用します。
※ macの方はデフォルトでインストールされています。
※ windowsの方はこちらからインストールしてください。
また、設定はこちらを参照して行ってください。
- インストール確認
$ sqlite3 -version
3.28.0 ...
また、今回使用するORM(Object Relational Mapper)のインストールを行います。
- SQLAlchemyのインストール
# mac
$ pip3 install Flask-SQLAlchemy
# windows
$ pip install Flask-SQLAlchemy
- 初期設定
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SECRET_KEY"] = b'_5#y2L"F4Q8z\n\xec]dasfe/'
app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///flask_blog.db'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
db = SQLAlchemy(app)
import src.views
モデルの定義
今回作成するのはブログなので、タイトル・本文があり、投稿日時もデータベースで管理します。
新たにsrcディレクトリに"models"を作成し、"entires.py"を作成します。
from src import db
from datetime import datetime
class Entry(db.Model):
__tablename__ = 'entries'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(50), unique=True)
text = db.Column(db.Text)
create_at = db.Column(db.DateTime)
def __init__(self, title=None, text=None):
self.title = title
self.text = text
self.create_at = datetime.now()
スクリプトで共通処理の実行
最後にモデルで定義した内容をデータベースに反映させます。
データベースへの反応は以下の二つがあります。
* コンソールでの実行
* スクリプトでの実行
今回はスクリプトでの実行を紹介します。(こちらはミスが起こりにくく実際の開発環境でよく使用されています。)
まず、スクリプトを実行するのに必要なライブラリをインストールします。
# mac
$ pip3 install Flask-Script
# windows
$ pip install Flask-Script
実際のスクリプトは以下になります。
import sys
sys.dont_write_bytecode = True
from flask_script import Command
from flask_script import Manager
from src import app
from src import db
class InitDB(Command):
def run(self):
db.create_all()
if __name__ == '__main__':
m = Manager(app)
m.add_command('init_db', InitDB())
m.run()
作成したスクリプトファイルを実行します。
# mac
$ python3 manage.py init_db
# windows
$ python manage.py init_db
実行後'src'ディレクトリに'flask_blog.db'というファイルが作成されていることを確認できるはずです。
Author And Source
この問題について(flaskとsqlite3の接続), 我々は、より多くの情報をここで見つけました https://qiita.com/k_yokozuka/items/7a6ced851081cc95aa7e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .