4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

flaskとsqlite3の接続

Last updated at Posted at 2021-01-11
# はじめに Flaskを使用して1からアプリケーションを作り、必要な技術を学んでいただけるようにまとめています。

databaseにアクセス

データベースのインストール・設定

今回はSQLiteを使用します。
※ macの方はデフォルトでインストールされています。
※ windowsの方はこちらからインストールしてください。
また、設定はこちらを参照して行ってください。

  • インストール確認
$ sqlite3 -version
3.28.0 ...

また、今回使用するORM(Object Relational Mapper)のインストールを行います。

  • SQLAlchemyのインストール
# mac
$ pip3 install Flask-SQLAlchemy

# windows
$ pip install Flask-SQLAlchemy
  • 初期設定
src/__init__.py
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"を作成します。

src/models/entry.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

実際のスクリプトは以下になります。

manage.py
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'というファイルが作成されていることを確認できるはずです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?