This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

[Day 41]djangoといろんなデータベースを接続する

Last updated at Posted at 2021-02-24

February 24, 2021
←前回:Day 40 djangoをサーバにアップする

はじめに

「Djangoを一から学びたい」とのことでありましたら[Day 1]Djangoの開発環境から読むことをおすすめします。

この章を初めから閲覧したいことでありましたら、[Day 35]自分でweb開発を一から作ってみることにしたから読むことをおすすめします。

今日やったこと

・Sqlite3と接続
・MySQLと接続
・Prsgresと接続
・・・・

Sqlite3と接続

これはデフォで接続されているので確認だけです。

python manage.py migrate

で、OKがいっぱい出ればOKです

スーパーユーザの作成

python manage.py createsuperuser

ユーザ名、メール、パスワードを答えます。
最終確認をしては、webを実際開いてurlの末尾に/admin/とすれば確認できます。

MySQLと接続

プロジェクト直下に.envを作成し以下を書き込む

.env
DATABASE_URL=mysql://root:password@localhost/pj_db

共通ライブラリのインストール

pip install dj-database-url
pip install python-dotenv

settings.pyの変更

もともとあるDATABASESの欄を削除して以下を追記

settings.py
import dj_database_url
from dotenv import (
    find_dotenv,
    load_dotenv,
)
load_dotenv(find_dotenv())
DATABASES = {
    'default': dj_database_url.config(conn_max_age=600),
}

MySQL用ライブラリのインストール

pip install mysqlclient

MySQL上にプロジェクト用データベースを作成

mysql -u root

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

exit

mysql -u root -p

create database pj_db;

exit

python manage.py migrate

Sqlite同様OKが出ればOK

管理や画面の設定はSqlite3と同様です。

Prsgresと接続

Postgres用ライブラリのインストール

pip install psycopg2-binary

プロジェクト用のデータベースを作成

sudo -u postgres psql postgres

\password postgres

CREATE DATABASE pj_db;

\q
.env
DATABASE_URL=postgres://postgres:password@localhost/pj_db

もともとあったものは先頭に#をつけてコメント化させる

python manage.py migrate

OKならOK

ここでも管理者画面の確認は上の二つと同様です。

Herokuで接続できているかの確認

requirements.txtを作成

requirements.txt
django
gunicorn
whitenoise
dj-database-url
python-dotenv
psycopg2-binary
mysqlclient

Procfileを作成

Procfile
web: gunicorn pj_db.wsgi

settings.pyの追記

settings.py
MIDDLEWARE = [
    ...
    'whitenoise.middleware.WhiteNoiseMiddleware',
]




DEBUG = False




STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

いっきにログインします。

pip install -r requirements.txt
python manage.py collectstatic

あとはgitに保存します。(説明が面倒なので省略します)

git init
git add --all
git remote add origin <gitのurl>
git commit -m ''
#もしここでできなければメールアドレスrunさせて
git commit -m 'init'
git push origin master

Herokuでまたあれこれします。わからなければ前回のを参照してください

OverviewのMoreからRun consoleで

python manage.py migrate
python manage.py createsuperuser

で、確認できる
これを自動化させることもできるらしいので今度確認したいと思う

おわりに

そろそろ来年度の準備をしなくてはいけなくなってきました
いろいろ焦っています。
落ち着け自分

←前回:Day 40 djangoをサーバにアップする
→次回:Day 42 blogでモデルの理解

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