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()
  1. 重新执行python manage.py makemigrations,成功。

实际上按照给出的提示是要安装mysqlclient的,但是在pip下安装会报错,要去下载执行文件,但是实际上pymysql更加好用,算是进化版吧.

接着执行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.py中,数据库设置下面插入:

DATABASES['default']['OPTIONS']['init_command'] = "SET sql_mode='STRICT_TRANS_TABLES'"

所以目前关于settings.py中的数据库全部设置如下:

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等
}
}
DATABASES['default']['OPTIONS']['init_command'] = "SET sql_mode='STRICT_TRANS_TABLES'"

转载于:https://www.cnblogs.com/xiujin/p/11280771.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值