1. 程式人生 > >Django初始數據庫遷移操作,安裝pymysql.

Django初始數據庫遷移操作,安裝pymysql.

ffffff tor pymysql 行數據 文件 backends prope fff engine

給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.