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