Django中对数据库的操作是由Models来完成的

Models是什么?

通常,一个Model对应数据库的一张数据表

Django中Models以的形式出现

它包含了一些基本字段以及数据的一些行为

所以,在Django中所有对数据库的操作,就是对Models中的类以及类的对象的操作,不需要写任何SQL语句来和数据库进行直接的交互。

编写Models步骤:

1、在应用根目录下创建models.py,并引入models模块

2、创建类,继承models.Model,该类即是一张数据表

3、在类中创建字段

字段创建:

1、数据表里的字段其实就是models.py中类的属性(变量)

例如:    name = models.CharField(max_length=100) # 发布会标题

Django中主要的数据类型:

编写完Models,怎么把类同步到数据库,生成数据表呢?

1、命令行中进入manage.py的同级目录

2、执行 python3 manage.py makemigrations app名(sign)(可选,如果不指定应用名,默认是该项目下的所有应用)

3、再执行 python3 manage.py migrate,完成数据迁移

完成数据迁移后,Django会自动在sign/migrations目录下生成移植文件

执行python3 manage.py sqlmigrate 应用名 文件id(0001) 查看SQL语句.

一、使用MySQL数据库:

Django 默认使用自带的sqlite3数据库,对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。

Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。

MySQL 是 Web 应用中最常用的数据库

使用MySQL数据库步骤

1、如果使用的 Python2.x 版本,那么连接 MySQL 数据库可以使用 MySQL-python。 但是,MySQL-python 只支持 Python2.x 版本,并在 2014 年 1 月之后就不再更新了,但这并不影响对该库的使 用。目前 Django 默认使用的是该驱动。如果使用的是 Python3.x 版本的 Django,所以这里推荐使用 PyMySQL 驱动。

命令:python3 -m pip install PyMySQL

因为 Django 在连接 MySQL 数据库时默认使用的是 MySQLdb 驱动,我们现在安装的是 PyMySQL 驱动,如何让 Django 通过 PyMySQL 来 连接 MySQL 数据库呢?在.../guest/__init__.py 目录下添加:

import pymysql

pymysql.install_as_MySQLdb()

2、setting.py文件中配置MySQL数据库

注意:切换了数据库后,之前 Sqlite3 数据库里的数据并不能复制到 MySQL 中,所以需要重新进行数据库同步,使数据模型重新在 MySQL 数据库中生成表。

执行 python3 manage.py migrate

二、视图层Views进行数据库的增、删、改、查

在原项目中再新建一个应用contral,记得在settings中添加此应用

1、创建model表

2、生成相应的表
python manage.py makemigrations
python manage.py migrate 
 
3、admin后台注册表

并添加数据

数据进行增删改查的代码:
UserInfo.objects.all()
UserInfo.objects.all().values('user')        #只取user列
UserInfo.objects.get(id=1)      #取出id为1的数据
UserInfo.objects.all().values_list('id','user')    #取出id和user列,并生成一个列表
UserInfo.objects.get(user='Jia')  
 
查找数据
 
4、配置url

5、编写views

6.html代码

7、成功获取数据

增加数据

models.UserInfo.objects.create(user='tswn',pwd='12345')
或者
obj = models.UserInfo(user='tswn',pwd='12345')
obj.save()
或者
dic = {'user':'tswn',pwd='12345')}
models.UserInfo.objects.create(**dic)

删除数据

改数据

UserInfo.objects.filter(user='Jia').update(pwd='520')

或者
obj = UserInfo.objects.get(user='Jia')
obj.pwd = '520'
obj.save()

Django开发基础----操作数据库的更多相关文章

  1. HelloDjango 系列教程:第 04 篇:Django 迁移、操作数据库

    文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们已经编写了博客数据库模型的代码,但那还只是 Python 代码而已,django 还没有把它翻译成数据库语言,因此实际上这 ...

  2. Django的基础操作总结

    1:准备开始 建立一个新的project: django-admin.py startproject XXXXXX(名称) 建立一个新的App:python manage.py startapp XX ...

  3. Django开发笔记之数据库的设计

    后台采用Django开发,可以体会到开发的便利之处,对于一个项目来说,首先最重要的是数据库的设计,那么在Django下数据库设计主要是如下步骤: 1,需求分析,这点子不用多说,而我也深刻体会到了没有原 ...

  4. Django开发基础----创建项目/应用

    环境: 1.python  3.6.2 2.安装django:pip install django==1.10.3 *下面以开发一个简单的用户签到系统介绍Django的使用 创建Django项目: 命 ...

  5. python测试开发django-13.操作数据库(增删改查)

    前言 django的models模块里面可以新增一张表和字段,通常页面上的数据操作都来源于数据库的增删改查,django如何对msyql数据库增删改查操作呢? 本篇详细讲解django操作mysql数 ...

  6. MySql数据库基础操作——数据库、用户的创建,表的制作、修改等

    MySql 是一款使用便捷.轻量级的数据库.因为他体积小.速度快.安装使用简单.开源等优点,目前是使用最广泛的数据库.目前位于Oracle甲骨文公司旗下.那今天我们就来介绍一下数据库的基本操作.具体介 ...

  7. Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作

    SQLite  是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...

  8. [置顶] Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作

    SQLite  是一个轻量级的免费关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的内存就够了,可以在(http://www.sqlite.org ...

  9. Django Model基础操作

    关于设计django model django为我们集成了ORM对数据库进行操作,我们只需要进行定义model,django就会自动为我们创建表,以及表之间的关联关系 创建好一个django项目-首先 ...

随机推荐

  1. 号外号外!解决github+hexo+yilia评论插件的问题!!!

    先走一波效果图!    本人网站--http://www.wenzheng.club/ ps:效果还是不错的,支持QQ微信登录,支持表情,甚至gif动图评论! 插件采用韩国服务器的来必力评论插件--h ...

  2. 监控 Linux 性能的 18 个命令行工具[转]

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...

  3. 面向对象_05【类的继承:extends、重写父类】

    类的继承:现有类的基础上构建一个新的类,构建出来的类被称作子类,子类可继承父类的属性和方法. 什么时候定义继承?当类与类之间存在着所属关系的时候,就定义继承.xxx是yyy中的一种==>xxx ...

  4. char a[]和char *a的比较

    指针和数组存在着一些本质的区别.当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作 为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是 ...

  5. [PHP]全局使用 Composer 组件的思路

    /** * 全局使用 composer 组件的步骤: * * 1. 建一个包含所有需要全局使用的composer包的项目. * 如:globalVendor/ * composer init 初始化 ...

  6. @RequestMapping注解

    Spring MVC中用于参数绑定的注解有很多,都在org.springframework.web.bind.annotation包中,根据它们处理的request的不同内容部分可以分为四类(主要讲解 ...

  7. git修改最后一次commit的内容

    提交修改 $ git add test.txt $ git commit -m "提交test.txt文件" 修改注释说明 如果需要修改commit的注释说明,则执行以下命令: $ ...

  8. apache配置详解

    可参考:Apache 的 httpd.conf 详解 ServerTokens OS 此指令控制了Server回送给客户端的回应头域是否包含关于服务器OS类型和编译进的模块描述信息.服务器会发送:Se ...

  9. BZOJ 3040: 最短路(road) [Dijkstra + pb_ds]

    3040: 最短路(road) Time Limit: 60 Sec  Memory Limit: 200 MBSubmit: 2476  Solved: 814[Submit][Status][Di ...

  10. 自己动手实践 spring retry 重试框架

    前序 马上过年了,预祝大家,新年快乐,少写bug 什么是spring retry? spring retry是从spring batch独立出来的一个能功能,主要实现了重试和熔断. 什么时候用? 远程 ...