Django使用mysql连接数据库配置
2019-04-16 本文已影响0人
上帝大人
- 修改settings.py:
将默认的数据库改为Mysql。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', #数据库的名字
'USER': 'root',
'PASSWORD':'root',
'HOST':'localhost',
'PORT':'3306',
}
}
- 修改__init__.py:
让系统启动时默认链接Mysql数据库。
import pymysql
pymysql.install_as_MySQLdb()
- 创建模型:
在创建的app中,有modeles.py
->在里面定义一个类Book
class BookInfo(models.Model):
btitle= models.CharField(max_length=20) #列名btitle,类型char,最长20字节
#char类型必须指定max_length选项,
bdate =models.DateField #列名bdate,类型 date。
models.XXXField()里面的选项,包括
default=默认值
,null=True数据库中表可以为空
,blank=False这个输入框不能为空
。
- 数据迁移:
数据迁移包括生成迁移文件,执行迁移。
下面命令在命令行(Terminal)输入
python manage.py makemigrations
#生成了迁移文件,在migrations包下面可以看到多出来一个文件
python manage.py migrate
#执行迁移
因为在django内部内置了ORM框架,当你创建一个类时,他会自动的在数据库中添加相关的表。表名为: app的名字_modole的类的名字。
- 看看你的test数据库有没有数据了!
遇到的错误:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3
->原因写的也很清楚,就是mysqlclient版本太老了,但是安装了新版本的,还是会报错。所以我们修改了错误信息中有'Base'的那个文件,将if条件和下面的报错语句注释掉。然后还是报错。
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
->将原来的改为' query = query.encode(errors='replace') ' 变化: decode---->encode
错误消失!(这个可能是是决心性的原因)