版本:
django:1.11.9
python3
mysql 5.7.18
在这里我们认为你已经安装好了mysql,python ,django
下面是来自django官方教程的一段话
If you wish to use another database, install the appropriate database bindings
and change the following keys in theDATABASES
'default'
item to match your database connection settings:
first
你需要一个Python的db API DRIVER 即数据库接口驱动
常见的有mysqldb、pymysql、mysqlclient
- MySQLdb is a native driver that has been developed and supported for over a decade by Andy Dustman.
-
mysqlclient is a fork of
MySQLdb
which notably supports Python 3 and can be used as a drop-in replacement for MySQLdb. At the time of this writing, this is the recommended choice for using MySQL with Django. - MySQL Connector/Python is a pure Python driver from Oracle that does not require the MySQL client library or any Python modules outside the standard library.
但是MYSQLdb不支持python3 ,
In addition to a DB API driver, Django needs an adapter to access the database drivers from its ORM.
Django provides an adapter for MySQLdb/mysqlclient while MySQL Connector/Python includes its own.
上面的意思是不仅需要接口驱动,还需要适配器,django已经为MYSQLdb和mysqlclient提供了适配器,MySQL Connector/Python内置这个适配器
虽然我有一个pymysql ,但按照官网的推荐我还是下载了一个mysqlclient
>>pip install mysqlclient
创建一个数据库
打开mysql,type:
CREATE DATABASE database_name CHARACTER SET UTF8; 指定数据库的编码utf8
Now ,我们已经有了db API DRIVER 和创建好的数据库,开始第二步
second
改变配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite',
'HOST':'',
'PORT':'',
'USER':'root',
'PASSWORD':'',
}
}
NAME 是你创建的数据库名字
HOST 主机
PORT 端口
USER 用户名 这个用户的权限应是能创建数据表的或者数据库,忘了。。
PASSWORD 登录mysql的密码
还有其他选项
third
现在我们可以创建一些模型去加到数据库里了
例如像下面
from django.db import models # Create your models here. class Publisher(models.Model):
pub_name=models.CharField(max_length=200)
city=models.CharField(max_length=200) class Book(models.Model):
book_name = models.CharField(max_length=200)
author = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
publish = models.ForeignKey(Publisher, on_delete=models.CASCADE)
calss 定义的类名将会是数据库对应的表名,属性对应字段,不过表明有所偏差,假如你的应用名是blog ,class名是Book, 创建的表则是blog_book 数据库不区分大小写
note:
在配置文件settings.py 修改
INSTALLED_APPS = [
'blog.apps.BlogConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
将我们写的应用添加进去,
'blog.apps.BlogConfig', 红色部分是我们应用app.py文件中的类名。
last
切换到项目的目录下
like
执行以下几条命令
python manage.py makemigrations
以上是提示错误,表示在Publisher 这个类的属性不能是book,所以起名字要注意
改完字段之后
OK
你可以使用
Python manage.py sqlmigrate 应用名 0001
去查看下,这条命令不会做任何操作,只是查看
python manage.py migrate
创建完成,再打开mysql,切到数据库你会看到
总结:
django 为我们内置的数据库是sqlite ,但是真正生产时是需要mysql, 等大型数据库的,
好像使用MYSQL,只需要两步
- 安装databases bindings
- 更改配置文件