web-dev-qa-db-ja.com

MySQLを使用するようにDjangoを設定する

PHPから少し離れてPythonを学びたいです。 PythonでWeb開発をするためには、テンプレート作成などを手助けするフレームワークが必要になります。

私はすべてのWeb開発のものをテストするために使用している非本番サーバーを使用しています。これは、一般的なMySQLサーバーパッケージの代わりにMariaDBを実行するDebian 7.1 LAMPスタックです。

昨日、Djangoをインストールし、最初のプロジェクトfirstwebを作成しました。まだ設定を変更していません。

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

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

python manage.py runserver myip:port

そしてそれはうまくいきます。問題ない。しかし、私はそれがこのように動作することになっているのではないかと思っています、そして、これが問題を引き起こすだろうか?

私の2番目の質問は私のMySQLデータベースを使うように設定したいということです。/firstweb/firstwebの下のsettings.pyに入り、ENGINEとNAMEが表示されますが、ここに何を入れるべきかわかりません。

それから、USER、PASSWORD、およびHostの各領域で、これが私のデータベースとその信任状ですか? localhostを使用している場合は、Host領域にlocalhostを入力するだけで済みますか?

156
gregor

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',
    }
}

Django 1.7以降、MySQL オプションファイル を利用することもできます。 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でデータベースの名前を設定した場合、これはNAMEよりも優先されます。これはMySQLオプションファイル内のすべてを上書きします。


ローカルマシンでアプリケーションをテストしているだけであれば、

python manage.py runserver

ip:port引数を追加すると、自分以外のマシンから開発アプリケーションにアクセスできるようになります。アプリケーションをデプロイする準備が整ったら、 djangobookDjangoのデプロイ の章を参照することをお勧めします

Mysqlのデフォルトの文字セットは、多くの場合、utf-8ではありません。そのため、必ずこのSQLを使用してデータベースを作成してください。

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

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

'ENGINE': 'mysql.connector.Django',

あなたのOSに最初にmysqlをインストールする必要があることに注意してください。

brew install mysql (MacOS)

また、mysqlクライアントパッケージはpython 3で変更されました(MySQL-Clientはpython 2でのみ機能します)。

pip3 install mysqlclient
270
Andy

最初のうちは以下のコマンドを実行してpythonの依存関係をインストールしてください。そうしないとpython runserverコマンドがエラーをスローします。

Sudo apt-get install libmysqlclient-dev
Sudo pip install MySQL-python

#Andyで定義されているようにsettings.pyファイルを設定し、最後に実行します。

python manage.py runserver

楽しむ..!!

25
Ritesh

上記のとおり、最初にxamppを https://www.apachefriends.org/download.html から簡単にインストールできます。その後、以下の手順に従います。

  1. http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/ からxamppをインストールして実行してから、Apache WebサーバーとMySQLデータベースを起動します。 GUI.
  2. Webサーバーは自由に設定できますが、デフォルトではWebサーバーはhttp://localhost:80、データベースはport 3306、PhpMyadminはhttp://localhost/phpmyadmin/にあります。
  3. ここからあなたはあなたのデータベースを見て、とても親しみやすいGUIを使ってそれらにアクセスすることができます。
  4. Djangoプロジェクトで使いたいデータベースを作成します。
  5. settings.pyファイルを次のように編集します。

    DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'Host': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '',
    }}
    
  6. 次のパッケージをvirtualenvにインストールします(virtualenvでDjangoを使用している場合はこれがより望ましいです)。

    Sudo apt-get libmysqlclient-devをインストールしてください。

    mySQL-pythonのインストール

  7. それでおしまい!!あなたはとても簡単な方法でMySQLでDjangoを設定しました。

  8. それではDjangoプロジェクトを実行してください。

    python manage.py migrate

    python manage.py runserver

14
root

あなたがpython3.xを使用しているならば、それから以下のコマンドを実行してください

pip install mysqlclient

それからsetting.pyを以下のように変更します。

DATABASES = {
'default': {
    'ENGINE': 'Django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }
13
Manoj Jadhav

実際、Pythonのバージョンなど、さまざまな環境で多くの問題があります。あなたはpython devファイルをインストールする必要があるかもしれませんので、 'ブルートフォース'インストールに私はこれらすべてを実行するでしょう

Sudo apt-get install python-dev python3-dev
Sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient

あなたは受け入れられた答えと一緒に行くのが良いはずです。それがあなたにとって重要なら、そして不要なパッケージを削除することができます。

8
mimoralea

これらのコマンドを実行してください

Sudo apt-getインストールpython-dev python3-dev

Sudo apt-get libmysqlclient-devをインストールしてください。

mySQL-pythonのインストール

pipインストールpymysql

ピップインストールmysqlclient

次にsettings.pyをのように設定します。

DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.mysql',
        'NAME': 'Django_db',
        'Host': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123456',
    }
}

MySQL接続をお楽しみください

5
Deepak Kumar

Andyの答えは役に立ちますが、Djangoの設定でデータベースのパスワードを公開することに懸念がある場合は、mysql接続でDjangoの公式設定に従うことをお勧めします。 https://docs.djangoproject.com/en/1.7/ ref/databases /

ここに引用:

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


# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8

設定で 'Host': '127.0.0.1'を置き換えるには、単純にmy.cnfに追加します。

# my.cnf
[client]
database = NAME
Host = Host NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8

もう1つの便利なオプションは、Django用にストレージエンジンを設定することです。あなたはそれをあなたのsetting.pyに入れたいと思うかもしれません:

'OPTIONS': {
   'init_command': 'SET storage_engine=INNODB',
}
4
Jiawei Dai

settings.py

DATABASES = {
'default': {
    'ENGINE': 'Django.db.backends.mysql',
    'NAME': 'Django',
    'USER': 'root',
    'PASSWORD': '*****',
    'Host': '***.***.***.***',
    'PORT': '3306',
    'OPTIONS': {
        'autocommit': True,
    },
}

}

その後:

python manage.py migrate

成功するとこれらのテーブルが生成される場合:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
Django_admin_log
Django_content_type
Django_migrations
Django_session

そしてuはmysqlを使うことができます。

これはショーケースの例です、Djangoバージョン1.11.5でテストする: Django-pool-showcase

3
LuciferJack

MySQLデータベースを使用するように設定するには、以下の手順に従ってください。

1) Install MySQL Database Connector :

    Sudo apt-get install libmysqlclient-dev

2) Install the mysqlclient library :

    pip install mysqlclient

3) Install MySQL server, with the following command :

    Sudo apt-get install mysql-server

4) Create the Database :

    i) Verify that the MySQL service is running:

        systemctl status mysql.service

    ii) Log in with your MySQL credentials using the following command where -u is the flag for declaring your username and -p is the flag that tells MySQL that this user requires a password :  

        mysql -u db_user -p


    iii) CREATE DATABASE db_name;

    iv) Exit MySQL server, press CTRL + D.

5) Add the MySQL Database Connection to your Application:

    i) Navigate to the settings.py file and replace the current DATABASES lines with the following:

        # Database
        # https://docs.djangoproject.com/en/2.0/ref/settings/#databases

        DATABASES = {
            'default': {
                'ENGINE': 'Django.db.backends.mysql',
                'OPTIONS': {
                    'read_default_file': '/etc/mysql/my.cnf',
                },
            }
        }
        ...

    ii) Next, let’s edit the config file so that it has your MySQL credentials. Use vi as Sudo to edit the file and add the following information:

        Sudo vi /etc/mysql/my.cnf

        database = db_name
        user = db_user
        password = db_password
        default-character-set = utf8

6) Once the file has been edited, we need to restart MySQL for the changes to take effect :

    systemctl daemon-reload

    systemctl restart mysql

7) Test MySQL Connection to Application:

    python manage.py runserver your-server-ip:8000
1
Shubham Gupta

最初にMySQLデータベースを作成しなければなりません。それからsettings.pyファイルに行き、あなたのMySQL資格情報で'DATABASES'辞書を編集してください。

DATABASES = {
 'default': {
 'ENGINE': 'Django.db.backends.mysql',
 'NAME': 'YOUR_DATABASE_NAME',
 'USER': 'YOUR_MYSQL_USER',
 'PASSWORD': 'YOUR_MYSQL_PASS',
 'Host': 'localhost',   # Or an IP that your DB is hosted on
 'PORT': '3306',
 }
}

以下は、virtualenv上でMySQLを使用するようにDjangoを設定するための完全なインストールガイドです。

http://codex.themedelta.com/how-to-install-Django-with-mysql-in-a-virtualenv-on-linux/

0
Sibi M