Django(三)模型与数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youand_me/article/details/78874246

前言

各环境等的使用版本如下:
Linux Mint 18.2 (Ubuntu 16.04);
python版本2.7.12和3.5.2;
Django版本为1.9;
MySQL版本5.7.20。

Django 模型是与数据库相关的,通过模型来操作数据库,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可。Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。MySQL 是 Web 应用中最常用的数据库。以下将以 MySQL 作为实例进行介绍。

MySQL安装

安装

首先打开终端,然后执行下面的三条命令完成安装:

sudo apt-get install mysql-server
sudo apt isntall mysql-client
sudo apt install libmysqlclient-dev

安装成功后可以通过下面的命令测试是否安装成功:

sudo netstat -tap | grep mysql

出现如下信息证明安装成功:

这里写图片描述

然后执行下述命令进入MySQL服务shell:

mysql -uroot -p

在Enter password:后输入你设置的密码就可以进入MySQL服务,如下图建立一个名叫demo的数据库,注意加分号:

这里写图片描述

  • 使用

打开终端,“ mysql -uroot -p”连接到数据库,然后你就可以建立数据库,建表,增删改查一系列数据库操作了。
然后在pycharm中就可以实现MySQL可视化了,打开后点击View—>Tool Windows—>Database

这里写图片描述

在弹出的视图里点击如下的绿色+号—>Data Source—>MySQL,出现如下图,然后填写信息,点击Test Connection测试连接,再点击Apply就ok,刚开始需要在最下面点击以下下载文件才能测试连接。

这里写图片描述

数据库配置

文件配置

Django的模型版块是可以实现根据模型建立数据库表的,我们需要告诉Django使用哪一种数据库以及数据库的用户密码等信息以连接数据库。

打开第二层demo目录下的settings.py文件并做修改(name为你的数据库名称,后面的参数就是你的数据库配置的用户名、密码和端口信息了):

# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'demo',
        'USER':'root',
        'PASSWORD':'password',
        'HOST':'localhost',
        'PORT':'3306',
    }
}

首先你得建一个数据库名为demo,打开终端,输入“mysql -uroot -p”输入密码进入mysql服务shell,然后创建数据库(注意如果你得数据库要存汉字,那就加上后面的参数,是utf8不是utf-8也不是utf_8):

create database demo default charset=utf8;

app模型完成

到这里我们可以不用在终端上用mysql服务创建表,django的模型会自动的操作表,所以我们只需要写好模型就行了。

我们在之前建立的名为login的app中完成模型,在login目录下的models.py中修改为如下:

# _*_ coding:utf-8 _*_

from __future__ import unicode_literals
from django.db import models

# Create your models here.
class Types(models.Model):
    name = models.CharField(max_length=20)
    types = models.IntegerField(default=4)

    def __str__(self):
        return self.name


class Members(models.Model):
    name = models.CharField(max_length=20)
    sex = models.CharField(max_length=2)
    age = models.IntegerField(null=True)
    TEL = models.CharField(max_length=11)
    nickname = models.CharField(max_length=20)
    password = models.CharField(max_length=15)
    # create_time = models.DateTimeField()
    member_type = models.ForeignKey(Types)

    def __str__(self):
        return self.name

我们新建了一个Types类和Members类,都继承自models.Model, 一个成员有姓名、年龄、性别、注册昵称、登录密码、成员类型;一个类型包括了类型名称和类型编号(比如超级管理员、管理员、会员、普通成员、游客等类型,每个类型都对应一个编号)。继承自models.Model的类,django都会将其同步到数据库,每个类在数据库中对应一个表。

到这里我们还得做一件事,那就是安装pymsql,打开终端(你python用哪一个版本就安装哪一个):

sudo pip install pymysql
sudo pip3 install pymysql

然后打开login应用下的init.py文件,添加如下语句:

import pymysql

pymysql.install_as_MySQLdb()

目的是告诉django把pymysql当做MySQLdb来使用,如果不添加这个会报找不到MySQLdb的错误,当然你也可以安装MySQLdb,但是不建议,因为MySQLdb已经不更新维护了。
这里用到了两种Field,Field类型后面章节再讲述。

然后将login应用下的views.py文件修改如下:

# _*_ coding:utf-8 _*_

from django.shortcuts import render

# Create your views here.
from login import models


def home(request):
    context = {}
    models.Types.objects.create(name='超级管理员', types=0)
    type = models.Types.objects.get(pk=1)
    models.Members.objects.create(nickname='超级管理员',
                                  password='admin1234',
                                  member_type=type)
    models.Types.objects.create(name='管理员', types='1')
    type = models.Types.objects.get(pk=2)
    models.Members.objects.create(nickname='管理员',
                                  password='admin1111',
                                  member_type=type)
    models.Types.objects.create(name='导师', types='2')
    type = models.Types.objects.get(pk=3)
    models.Members.objects.create(name='张华',
                                 sex='女',
                                 age='18',
                                 TEL='13524654287',
                                 nickname='芳@华',
                                 password='zh.1998@1204',
                                 member_type=type)
    models.Types.objects.create(name='成员', types='3')
    type = models.Types.objects.get(pk=4)
    models.Members.objects.create(name='李楠',
                                 sex='女',
                                 age='19',
                                 TEL='13425158478',
                                 nickname='南方南',
                                 password='LN.axp231',
                                 member_type=type)
    models.Types.objects.create(name='游客', types='4')
    type = models.Types.objects.get(pk=5)
    models.Members.objects.create(name='徐浩',
                                 sex='男',
                                 age='18',
                                 TEL='15234585461',
                                 nickname='背手',
                                 password='pa7nan2.@#',
                                 member_type=type)
    return render(request, 'home.html', context)

def login(request):
    context = {}
    return render(request, 'login.html', context)

上述的关于模型操作的models.Types.objects.create()和models.Types.objects.get()等将在后面章节做学习。

同步数据库

现在就可以将django的login应用模型同步到mysql数据库了,还记得在运行项目的时候出现的红色的:

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

那是因为没有同步数据库的原因,当时没有用到就没管,现在我们用终端进入到项目的路径,执行下面两条命令同步所有在settings.py中的INSTALLED_APPS中配置的应用的模型到mysql数据库(注意路径,要运行manage.py就得到它所在目录,如果你想用python3就用后面的命令,不用去切换默认的python版本):

# python2执行
python manage.py makemigrations
python manage.py migrate

# python3执行
python3 manage.py makemigrations
python3 manage.py migrate

然后你就可以看到数据库中多了很多个表(包括django默认的还有我们模型中的两个表,一个为login_members,另一个为login_types,不用说你也能看出来djanggo同步数据库表的命名规则是:appName_tableName)

我们在终端运行项目(前面章节讲了这里就不赘述怎么运行了,至于是要用python2还是python3自己选,和上面一样,不要去修改默认的python版本),打开链接,然后查看数据库的login_members和login_types两个表,会发现内容写进去了。

可以用pycharm查看表,如下图:

这里写图片描述

也可以在终端用mysql服务查看,注意每一个语句都要在后面加分号:

这里写图片描述

这里写图片描述

最后讲一下在终端结束mysql服务的快捷键ctr+d,结束django项目的快捷键ctr+c。

Django(三)模型与数据库源码下载

转到下一章

猜你喜欢

转载自blog.csdn.net/youand_me/article/details/78874246
今日推荐