Django(三)模型与数据库
来源:互联网 发布:dot js 是什么 编辑:程序博客网 时间:2024/05/23 05:07
前言
各环境等的使用版本如下:
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-serversudo apt isntall mysql-clientsudo 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/#databasesDATABASES = { '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_literalsfrom 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.nameclass 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 pymysqlsudo pip3 install pymysql
然后打开login应用下的init.py文件,添加如下语句:
import pymysqlpymysql.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 modelsdef 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 makemigrationspython manage.py migrate# python3执行python3 manage.py makemigrationspython3 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(三)模型与数据库源码下载
转到下一章
- Django(三)模型与数据库
- Django-模型(数据库)
- Django 模型(数据库)
- Django 模型(数据库):
- django 模型model与数据库1
- 千与千寻django(四)---django的模型层与数据库的连接
- Django之模型三
- Django 之 (6)模型(数据库)
- Django 模型(数据库)操作的要点
- Django学习06---Model模型(数据库)
- Django模型--数据库操作
- django 数据库模型映射
- Django 数据库模型配置
- Django模型(数据库)
- Django项目实践3 - Django模型(view-数据库)
- django官方文档——模型与数据库
- The Django Book【第5章 与数据库交互:模型】
- Django中的模型与数据库(Models and database)
- 开源大数据周刊-第76期
- Extjs-Grid前添加选项框以及多选方式。
- 今日,冬至
- Qt之setCodecForLocale
- django-rest-framework序列化的使用(一)
- Django(三)模型与数据库
- Python 异常错误记录
- sleep 和 wait 的区别
- 解决保存标签到数据库转义成gt和lt等情况
- rabbitMQ第四篇:远程调用
- 创建动画剪辑
- JS中判断对象是否含有某个属性的方法
- table模块/数据表格
- 一些有意思的网站