Django初始數據庫遷移操作,安裝pymysql.
給Django配置mysql數據庫
現在settings中將DATABASES重新設置
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘,
‘NAME‘: "databasename",
‘PASSWORD‘: "password",
‘USER‘:"rusername",
‘HOST‘: "localhost",
‘PORT‘: 3306,
‘OPTIONS‘: { "init_command": "SET default_storage_engine=‘INNODB‘"
} #設定mysql數據庫的初始引擎,也可以加入其他字段,如 chaeset等
}
}
執行python manage.py makemigrations時,報錯:
‘Did you install mysqlclient or MySQL-python?‘ % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named ‘MySQLdb‘.
Did you install mysqlclient or MySQL-python?
經過上網搜索得知,MySQLdb並不支持Python3.5,因此只能找別的類庫代替。
解決方法:
使用pymysql代替MySQLdb,因為兩者的用法完全一致,步驟:
1. PIP install pymysql
2. 執行成功後,打開__init__.py,添加如下:
import pymysql
pymysql.install_as_MySQLdb()
3. 重新執行python manage.py makemigrations,成功。
實際上按照給出的提示是要安裝mysqlclient的,但是在pip下安裝會報錯,要去下載執行文件,我比較懶,就換一個方式吧.後面如果出錯,再來更新,嘿嘿嘿.
接著執行python3 mange.py migrate,報錯如下:
WARNINGS:
?: (mysql.W002) MySQL Strict Mode is not set for database connection ‘default‘
HINT: MySQL‘s Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it.
說明當前使用的mysql數據庫不是嚴格模式.嚴格模式下:
1.不支持對not null字段插入null值
2.不支持對自增長字段插入""值
3.不支持text字段有默認值
需要進行數據庫的改動,以防止bug出現.
在settings中,數據庫設置下面插入:
DATABASES[‘default‘][‘OPTIONS‘][‘init_command‘] = "SET sql_mode=‘STRICT_TRANS_TABLES‘"
Django初始數據庫遷移操作,安裝pymysql.