質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.61%

DjangoでDBを使用しない場合

受付中

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 4,361

score 47

Django2.1でDB(SQLite)を使用しない場合は無効にするなどの設定はないでしょうか
また、使用しない場合でもマイグレーションは行わないといけないのでしょうか
マイグレーションしないとwarningレベルでのエラーが出てしまうのでこれも出さないようにしたいです

よろしくお願いします

環境
Django2.1
python3.7
CentOS7.6

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • cray123

    2019/03/18 11:50

    Djangoを使わなければいけません...
    はじめはDBを使うという要件だったので

    キャンセル

  • t_obara

    2019/03/18 12:23

    単にそのままにしておくといいう選択肢はないのですか?DBへの書き込みなどしなければ良いだけのようにも思いますが。

    キャンセル

  • cray123

    2019/03/18 13:04

    ご回答有り難うございます
    私としては放っておいてもいいのですが、本番環境でははたしてそれで正しいのかと思った次第です

    キャンセル

回答 2

+2

前提として、DjangoはWEBフレームワークなので、

django-admin startproject mysite
python manage.py startapp polls


で作られるデフォルトのモデルは消せませんし、存在すべきです。

使用しない場合でもマイグレーションは行わないといけないのでしょうか

使いたくないテーブルについては、models.pyに定義しなければいいだけで、models.pyに定義しなければマイグレーションする必要もありません

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/18 13:13

    ご回答ありがとうございます

    >>使いたくないテーブルについては、models.pyに定義しなければいいだけで、models.pyに定義しなければマイグレーションする必要もありません

    どうやら私の知識が不足しているようです
    models.pyの仕様含めてDjangoのドキュメントを読み返してみます

    キャンセル

+1

ご回答いただきありがとうございます。

Djangoを使わなければいけません...
はじめはDBを使うという要件だったので

「 DB を使わない」となるとツール選定の前提が大きく変わるので、私なら Django 以外の選択肢の検討に戻りますが、お立場上 Django を使わないといけない、という状況だと理解しました。

ご質問の主旨に戻ります。 DB を使わない形で Django を使うことはできると思います。

例えば、次のようなファイルを作って、これを 1 ファイルの Django プロジェクトとして動かすことが可能です。

hello.py:

import sys

from django.conf import settings
from django.http import HttpResponse
from django.urls import path


settings.configure(DEBUG=True, ROOT_URLCONF=__name__)


def index(request):
    return HttpResponse('Hello World')


urlpatterns = (path('', index),)

if __name__ == '__main__':
    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

ここには DB の定義が含まれませんが、次のコマンドを使えばとりあえず Django プロジェクトとして動くことを確認できます(あくまでもサンプルです)( Python 3.x / Django 2.1.x で確認しました)。

python hello.py runserver

ただ、「できる=推奨される」というわけではなくて、やはり Django は DB を使う形が基本になっていると私は思います( DB を使わずに Django を使う例は検索してもあまり出てこなかったのではないでしょうか)。その基本を覆すということは細々とした部分で自己流でいろいろ決めたり調べたりする必要があるものと思います。

おおよそこのような感じですが、細かなメリット・デメリットについてはご自身でお調べになってみてください。

ちなみに上 ↑ のサンプルは『 Lightweight Django 』という Django 書籍のサンプルを少し改変したものです。お読みになるとご参考になるかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/18 13:10

    ご回答ありがとうございます
    django初心者なのでご提示の書籍も見てみようなかと思います

    散々探しても情報があまり出てこなかったので推奨されていない そもそも検討すらされていないというのは理解しております

    その上で、やはりDBを使わないという設定のようなものはないということでしょうか?
    現在、DBを使わない形でアプリケーションが動くことは確認しているのですが、マイグレーションをしないとrun serverの際にマイグレーションしなさいといったWarningのエラーが出力されます。

    無視をしてもよいのでしょうか?
    よろしくお願いします。

    キャンセル

  • 2019/03/19 20:57

    「 DB を使わずに Django を使いたい」というのと「 `manage.py runserver` 実行時に migration 関係の Warning が出力されないようにしたい」というのは論点が別なので、分けて考えるようにしましょう。

    > 散々探しても情報があまり出てこなかったので推奨されていない そもそも検討すらされていないというのは理解しております
    >
    > その上で、やはりDBを使わないという設定のようなものはないということでしょうか?

    「DBを使わないという設定」というのは具体的にいうとどのようなものをイメージされていますか?

    > 現在、DBを使わない形でアプリケーションが動くことは確認しているのですが、マイグレーションをしないとrun serverの際にマイグレーションしなさいといったWarningのエラーが出力されます。
    >
    > 無視をしてもよいのでしょうか?

    前提がわからないので教えてください。「 SQLite のデータベースがすでに存在していて、 `models.py` の中にモデルを定義していて、それに対応する migration ファイルも作成している」という状況のもとで「 `manage.py runserver` で Warning が出ないようにしたい」ということですか?

    Woopen さんが言われるとおり

    > 使いたくないテーブルについては、models.pyに定義しなければいいだけで、models.pyに定義しなければマイグレーションする必要もありません

    だと思うのですが、いかがでしょう。

    キャンセル

  • 2019/03/20 10:16

    返信有難うございます

    分の知識不足が露呈している気がします..

    アプリケーション配下の自動生成されるmodels.pyには何も書いていません(コメントのみ)
    その上でrun serverするときにWarningが出力されます

    キャンセル

  • 2019/03/20 11:47

    なるほど、わかってきた気がします。

    > アプリケーション配下の自動生成されるmodels.pyには何も書いていません(コメントのみ)

    そのプロジェクトには、ご自身(開発メンバー含む)で作られた model 定義も migration ファイルも一切無い、という理解で正しいですか?

    ちなみに、

    > 「DBを使わないという設定」というのは具体的にいうとどのようなものをイメージされていますか?

    こちらの質問についてはいかがでしょう?

    追加でもうひとつ質問です。 `settings.py` の `INSTALLED_APPS` の定義はどのようになっていますか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る