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


171

PHPから少し離れて、Pythonについて学びたいです。PythonでWeb開発を行うには、テンプレート化などを支援するフレームワークが必要です。

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

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

これが私の最初の大きな混乱です。チュートリアルでは、Djangoをインストールした人を追跡し、彼の最初のプロジェクトを開始し、Apacheを再起動しました。その後、Djangoはその後も機能しました。彼はブラウザに行き、Djangoのデフォルトページに問題なく行きました。

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

python manage.py runserver myip:port

そしてそれは機能します。問題ない。しかし、私はそれがこのように機能するはずであり、これが将来的に問題を引き起こすかどうか疑問に思っていますか?

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

そして、USER、PASSWORD、およびHOST領域に、これは私のデータベースとその資格情報ですか?localhostを使用している場合、localhostをHOST領域に配置できますか?


注:2016年1月1日以降、Python 3.5.x用のMySQLドライバーはありません。stackoverflow.com/questions/34456770/を参照してくださいしたがって、Python 3.4までのみを使用してください。Django 1.9(2016年1月現在の最新の安定版リリース)は引き続き使用できます。
Tomas Tintera 2016年

回答:


316

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引数を追加すると、自分以外のマシンが開発アプリケーションにアクセスできるようになります。アプリケーションをデプロイする準備ができたら、djangobookのDjangoのデプロイに関する章を参照することをお勧めします

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-Clientpython 2でのみ機能します)

pip3 install mysqlclient

26

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

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

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

python manage.py runserver

楽しんで..!!


18

python3.xを使用している場合は、以下のコマンドを実行します

pip install mysqlclient

次に、setting.pyを次のように変更します

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }

1
私はpython 3.6でvirtualenvを使用しています。これは私の命を救います。ありがとうございました。また、最初に
Fred

15

上記で述べたように、最初にhttps://www.apachefriends.org/download.htmlからxamppを簡単にインストールできます。 次に、以下の手順に従います。

  1. http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/からxamppをインストールして実行しますし、GUIからApache WebサーバーとMySQLデータベースを起動します。
  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 install libmysqlclient-dev

    MySQL-pythonのpipインストール

  7. それでおしまい!!MySQLで非常に簡単な方法でDjangoを設定しました。

  8. Djangoプロジェクトを実行します。

    python manage.py migrate

    python manage.py runserver


7

実際には、さまざまな環境、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

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


7

これらのコマンドを実行する

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python 
pip install pymysql
pip install 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接続を楽しむ


4

アンディの答えは役に立ちますが、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

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

そして、あなたはmysqlを使用することができます。

これはショーケースの例であり、Djangoバージョン1.11.5でテストしますDjango-pool-showcase


3
  1. インストール mysqlclient

sudo pip3 install mysqlclient

エラーが発生した場合:

コマンド「python setup.py egg_info」が/ tmp / pip-install-dbljg4tx / mysqlclient /のエラーコード1で失敗しました

次に:

 1. sudo apt install libmysqlclient-dev python-mysqldb

 2. sudo pip3 install mysqlclient

  1. settings.pyを変更します

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'website',
            'USER': 'root',
            'PASSWORD': '',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'OPTION': {'init_command':"SET sql_mode='STRICT_TRANS_TABLE',"},
        }
    }

1

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, lets 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

0

最初にMySQLデータベースを作成する必要があります。次に、settings.pyファイルに移動'DATABASES'し、MySQL資格情報を使用して辞書を編集します。

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/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.