djangoとMariaDB設定 Ubuntuで

2019年5月11日

django 2.0 ubuntu16.04 mariadb で試しています。

djangoのデフォルルトDBはsqliteになっていいますが、mariaDBに設定してみます。

設定ファイルは別の記事の続きで、

mysite/settings.pyを編集します。

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.sqlite3',
 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 }
}

となっているところを

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.mysql',
         'NAME': 'DB名',
         'USER':'ユーザ名',
         'PASSWORD':'パスワード',
         'HOST':'localhost',
         'PORT':'',
     }
}

と変更します。次にcreate databaseで空DBを作成してください。別の記事でまとめてありますので、参考ください。

次にpythonのmariadb接続コンポーネントを入れたいのですが、

$ sudo pip3 install mysqlclient

を実行するとなぞのエラーがでます。

mysql_config not found

これは次のコマンドで解決しました。

$ sudo apt-get install libmysqlclient-dev

もう一度

$ sudo pip3 install mysqlclient 

を実行です。

次にdjango アプリで

$ python3 manage.py migrate

でmariaDBにテーブルが出来るか確認してOKではないかと思います。デフォルトで以下のテーブルができています。

MariaDB [djangotest]> show tables;
+----------------------------+
| Tables_in_djangotest |
+----------------------------+
| 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 |
+----------------------------+

次に、試しにapp1/models.pyファイルを編集してカスタムテーブルを作成してみます。

from django.db import models
class Emp(models.Model):
   emp_name = models.CharField(max_length=200)
   hire_date = models.DateTimeField('date hired')

以下2つのコマンドでEMPテーブルを作成します。

$ python3 manage.py makemigrations
$ python3 manage.py migrate

MariaDBコンソールからshow tables;してみますと新しいテーブルapp1_empが出来ています。

MariaDB [djangotest]> show tables;
 +----------------------------+
 | Tables_in_djangotest       |
 +----------------------------+
 | app1_emp                   |