LoginSignup
1
1

More than 5 years have passed since last update.

Django でデータベースを sqlite3 から MariaDB に切り替える

Last updated at Posted at 2018-12-15

sqlite3 をデータベースとして使っている既存の Dejango プロジェクトのデータベースを MariaDB に切り替える方法です。

サンプルとして次のものを使いました。
django-csv-sample

1) まずは、クローンします。

git clone https://github.com/naritotakizawa/django-csv-sample

2) db.sqlite3 を削除します。

cd django-csv-sample/
rm db.sqlite3

3) MariaDB に ユーザーとデータベースを用意します。

user: django
password: tiger123
データベース: project_csv

4) project/settings.py を編集

project/settings.py
省略
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'project_csv',
        'USER': 'django',
        'PASSWORD': 'tiger123',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
                'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
                },
    }
}
省略

5) migrate

python manage.py migrate

6) 開発サーバーを起動

python manage.py runserver

7) ブラウザーで http://127.0.0.1:8000/ にアクセス

8) 例えば次のファイルをインポート

in01.csv
102,おはようございます
103,こんにちは
104,こんばんは
105,さようなら
106,さようなら

このソフトの問題として、

行数の長いcsv の後に、行数の短いcsv をインポートすると、
元のファイルに上書きという形で表示されます。

9) データベースの設定を確認する方法

$ python3 manage.py shell
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.conf import settings
>>> print(settings.DATABASES)
{'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'django_csv', 'USER': 'django', 'PASSWORD': 'tiger123', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
>>> 
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1