1. ホーム
  2. python

[解決済み] MySQLを使用するためのDjangoのセットアップ

2022-04-22 17:32:15

質問

PHPから少し離れて、Pythonを学びたいと思っています。PythonでWeb開発をするために、テンプレートなどを支援するフレームワークが必要なのですが、どのようなものがありますか?

私は非本番サーバーを持っていて、そこでウェブ開発に関するすべてのことをテストしています。Debian 7.1 LAMP スタックで、一般的な MySQL-server パッケージの代わりに MariaDB が稼働しています。

昨日、Djangoをインストールし、最初のプロジェクトである ファーストウェブ . まだ何も設定を変えていません。

ここで、私の最初の大きな混乱があります。私が追ったチュートリアルでは、この人は Django をインストールし、最初のプロジェク トを開始し、Apache を再起動し、それ以降 Django が動作するようになりました。彼はブラウザで、問題なく Django のデフォルトページに移動しました。

しかし、私は、最初のWebフォルダにcdして実行する必要があります。

python manage.py runserver myip:port

そして、それは動作します。問題ありません。しかし、このように動作することになっているのか、また、これによってこの先問題が発生することはないのか、疑問に思っています。

私の 第二の質問 は、私はそれが私のMySQLデータベースを使用するように設定したいです。私は/firstweb/firstwebの下のsettings.pyに入り、ENGINEとNAMEを見ましたが、ここに何を書くべきかわかりません。

そして、USER、PASSWORD、HOSTのエリアは、私のデータベースとその資格情報でしょうか?もし私が ローカルホスト を入れるだけでよいのでしょうか? ローカルホスト をHOSTのところに書いてください。

解決方法は?

MySQLのサポート を追加するのは簡単です。あなたの DATABASES の辞書に、このようなエントリーがあるはずです。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'DB_NAME',
        'USER': 'DB_USER',
        'PASSWORD': 'DB_PASSWORD',
        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
        'PORT': '3306',
    }
}

また、MySQLを利用するオプションもあります。 オプションファイル Django 1.7 の時点では。これを実現するには DATABASES のような配列になります。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}

を作成する必要があります。 /path/to/my.cnf ファイルを作成し、上記と同様の設定を行います。

[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8

Django 1.7 のこの新しい接続方法では、接続が確立される順序を知ることが重要です。

1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.

言い換えれば、OPTIONS でデータベースの名前を設定すると、MySQL オプション ファイルにあるものを上書きする NAME よりも優先されるのです。


ローカルマシンでアプリケーションをテストするだけなら

python manage.py runserver

を追加します。 ip:port 引数を使用すると、自分のマシン以外のマシンから開発用アプリケーションにアクセスできるようになります。アプリケーションをデプロイする準備ができたら、次の章に目を通すことをおすすめします。 Djangoのデプロイ にある djangobook

Mysqlのデフォルトの文字セットはutf-8でないことが多いので、このsqlを使用してデータベースを作成していることを確認してください。

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

を使用している場合 オラクルのMySQLコネクタ あなたの ENGINE の行は、次のようになります。

'ENGINE': 'mysql.connector.django',


なお、最初にOSにmysqlをインストールする必要があります。

brew install mysql (MacOS)

また、python3用にmysqlクライアントパッケージが変更されています( MySQL-Client はpython 2でのみ動作します)

pip3 install mysqlclient