mysql 连接 django

版本:

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':'3306',
        'USER':'root',
        'PASSWORD':'123',
    }
}

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)
View Code

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',
]
View Code

将我们写的应用添加进去,

'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
  • 更改配置文件

 

 

 

posted @ 2017-08-22 14:04  dragonbird  阅读(16440)  评论(0编辑  收藏  举报