配置Django连接到mysql
1.models.py写一个类,继承models.Model
class Book(models.Model):
name=models.CharField(max_length=20)
price=models.IntegerField()
pub_date=models.DateField()
2.修改settings.py文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'books', #你的数据库名称
'USER': 'root', #你的数据库用户名
'PASSWORD': '', #你的数据库密码
'HOST': '', #你的数据库主机,留空默认为localhost
'PORT': '3306', #你的数据库端口
}
}
3.修改项目文件夹下的__init__.py文件
没有安装pymsql(python3)的请在pycharm自行安装,安装后添加以下内容
import pymysql
pymysql.install_as_MySQLdb()
4.数据库迁移
由于Django默认使用的数据库为SQLlite,但现在重新配置了MySQL数据库,因此需要将原来的数据迁移过来。
配置好上面的信息后,执行数据迁移,然后重启服务,就可以继续开发你的系统
[root@localhost Django_ORM]# python manage.py makemigrations
[root@localhost Django_ORM]# python manage.py migrate
在此处可能遇到的问题:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,可以修改下面路径的文件(即python的安装路径):
C:\Users\dell\AppData\Local\Programs\Python\Python36-32\Lib\site-packages\django\db\backends\base\base.py
将下面的文件注释掉即可:
if version < (1, 3, 3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
如果还是出现类似错误,我当时是查看了一下pymysql的版本,发现有点低,就将pymysql卸载后又安装了一遍即:
卸载是在pycharm的setting中(点击-即可卸载)
安装代码如下所示:
pip3 install pymysql
如果出现下面这种错误
site-packages/pymysql/cursors.py:166: Warning: (3135, "'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO'
sql modes should be used with strict mode. They will be merged with strict mode in a future release.")
result = self._query(query)
site-packages/pymysql/cursors.py:166: Warning: (3090, "Changing sql mode 'NO_AUTO_CREATE_USER' is deprecated. It will be removed in a future release.")
result = self._query(query)
只需要修改django中的配置文件settings.py文件,将数据库的配置里设置SQL_MODES的地方注释掉即可。
5.数据库的配置连接
最后输入帐号密码登陆