Django中的ORM框架使用小技巧

                                       作者:尹正杰 

版权声明:原创作品,谢绝转载!否则将追究法律责任。

  Django对各个数据提供了很好的支持,包括PostgreSQL,MySQL,SQLite和Oracle,而且为这些数据库提供了统一的调用API,这些API统称为ORM框架。通过使用Django内置的ORM框架可以实现数据库和读写操作。

一.ORM介绍

1>.什么是ORM

  ORM框架是一种程序技术,用户实现面向对象编程语言中不同类型系统的数据之间的转换。从效果上说,其实是创建了一个可在编程语言中使用的“虚拟对象数据库”,通过对虚拟对象数据库操作从而实现对目标数据库的操作,虚拟对象数据库与目标数据库是相互对应的。在Django中,虚拟对象数据库也称为模型,通过模型是爱你对目标数据库的读写操作。

2>.ORM能做的啥事情

  第一:操作数据表(包括创建表,删除表和修改表);

  第二:操作数据行(对数据的增删改查);

  注意,ORM不能创建数据库,需要我们手动创建对应的 数据库,建议将数据库的字符编码设置为utf8.

3>.使用Django的ORM详细步骤

  第一:自己手动创建数据库;

  第二:在Django项目中配置链接数据库的相关配置(在Django项目中的setting.py中设置);

  第三:Django用什么链接数据库,Django默认是使用MySQLDB。(Django2.0以下版本是不支持python3的,他们在兼容性上还有写问题,但是并不是说python3不能使用Django的ORM,我们需要稍微做一下调整即可,如果使用python3.6以上版本的话,我们可以使用pymysql模块来替代默认的MySQLDB链接驱动。);

  第四:在我们项目中的应用模块中找到对应的models.py文件,在这里面创建一个类,这个类必须得继承“model.Model”;

  第五:创建好类后,我们需要在项目目录下手动执行“python manage.py makemigrations”(将你每次在model.py修改的操作在“migrations”目录中记录下来并生成对应的文件,比如“0001_initial.py”)和“python manage.py migrate”(翻译你在model.py中的定义的SQL语句并执行!)

  接下来我们会详细剖析一下ORM的使用,此处我们使用ORM是针对Django 1.11.11这个版本,后期我会更新一片关于Django.2.1.4这个版本的使用,其实2在用法中差异不大。如果时间允许的话,我会一一给大家分享出来的。

二.Django使用ORM创建数据表

1>.配置Django链接的数据库为Mysql

2>.编辑项目路径下的“__init__.py”,添加如下图所示的内容

3>.编写models.py 配置文件

4>.执行建表语句

5>.查看“yinzhengjie”数据库中的表信息

6>.查看ORM建表语句后的数据信息

三.Django ORG操作数据表-删除表

1>.在model.py中定义的类注视掉即可!如下图所示:

2>.在项目中执行“python manage.py makemigrations”(通知项目你已经修改了model.py文件)

3>.执行“python manage.py migrate”(将python代码翻译成SQL语句执行!)

四.Pycharm 链接MySQL工具的使用

1>.点击“Database”

2>.选择需要链接的数据库

3>.下载驱动,如下图所示,点击蓝色的“Download”按钮

4>.链接数据库测试

 

5>.查看某个表中的数据(我自己把之前删除的那个表给还原了)

6>.往某张表中添加数据

7>.再次查看表中的信息

Django中的ORM框架使用小技巧的更多相关文章

  1. 在Django中使用ORM创建图书管理系统

    一.ORM(对象关系映射) 很多语言的web框架中都有这个概念 1. 为什么要有ORM? 1. 写程序离不开数据,要使用数据就需要连接数据库,但是不同的数据库在sql语句上(mysql,oracle等 ...

  2. django中的ORM介绍和字段及字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  3. Django中的ORM介绍,字段以及字段的参数。

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  4. 将keras模型在django中应用时出现的小问题——ValueError: Tensor Tensor("dense_2/Softmax:0", shape=(?, 8), dtype=float32) is not an element of this graph.

    本文原出处(感谢作者提供):https://zhuanlan.zhihu.com/p/27101000 将keras模型在django中应用时出现的小问题 王岳王院长 10 个月前 keras 一个做 ...

  5. Django 中得ORM介绍和字段及字段参数

    ORM 介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说 ORM 是通过使用 ...

  6. django中的ORM与 应用与补充

    目录 django中的ORM与 应用与补充 ORM与数据的对应关系 ORM 常用字段 ORM 其他字段 自定义字段 字段参数 Model Meta参数 常用13中查询(必会) 单表查询的双下划线应用 ...

  7. 细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一

    细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一(转) ADO.NET Entity Framework        ADO.NET Entity Framework 是微软以 ADO.N ...

  8. Django中的ORM进阶操作

    Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. ...

  9. Django中使用bookstarp框架(4)

    Django中使用bookstarp框架(4) 注意:要使用bookstarp框架前,要先有css的基础 因为主要是研究后台的使用方法,就引入前端的框架,简化html上的耗时(主要是不想把时间浪费在前 ...

随机推荐

  1. GLSL 变量属性

    1. attribute变量为这个attribute变量指定一个位置(用无符号值表示):glBindAttribLocation利用这个“位置”来指定需要传给shader里的attribue变量的数据 ...

  2. A - 敌兵布阵 HDU - 1166 线段树(多点修改当单点修改)

    线段树板子题练手用 #include<cstdio> using namespace std; ; int a[maxn],n; struct Node{ int l,r; long lo ...

  3. 洛谷3705 [SDOI2017] 新生舞会 【01分数规划】【KM算法】

    题目分析: 裸题.怀疑$ O(n^4log{n}) $跑不过,考虑Edmonds-Karp优化. 代码: #include<bits/stdc++.h> using namespace s ...

  4. 安卓Android基础—第二天

    测试的相关概念 好的软件不是开发出来的,是不断测试出回来的 根据是否知道源代码 黑盒测试 白盒测试 根据测试的粒度 方法测试 单元测试 集成测试 系统测试 根据测试的暴力程度 压力测试(谷歌工程师提供 ...

  5. 志愿者招募 HYSBZ - 1061(公式建图费用流)

    转自神犇:https://www.cnblogs.com/jianglangcaijin/p/3799759.html 题意:申奥成功后,布布经过不懈努力,终于 成为奥组委下属公司人力资源部门的主管. ...

  6. haar的简单应用(2)

    上次对图片进行了人脸识别,这次对摄像头捕获的内容进行识别 直接写注释来解释 import cv2 def CatchUsbVideo(window_name, camera_idx): #定义一个函数 ...

  7. [luogu2446][bzoj2037][SDOI2008]Sue的小球【区间DP】

    分析 简单区间DP, 定义状态f[i][j][0/1]为取完i-j的小球最后取i/j上的小球所能获得的最大价值. 排序转移. ac代码 #include <bits/stdc++.h> # ...

  8. rt-thread中软件定时器组件超时界限的一点理解

    @2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_ ...

  9. emwin之WM_DeleteWindow函数使用注意事项

    @2018-12-21 [小记] 在当前窗口P创建一新窗口C后再使用函数 WM_DeleteWindow 删除该C窗口时,删除窗口句柄必须是根句柄,如果使用 WM_GetClientWindow(pM ...

  10. 逆向并查集 HYSBZ1015星球大战starwar

    星球大战starwar HYSBZ - 1015   很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系 ...