一、Django 的 ORM 简介:

  Django的ORM系统的分析:

    1、ORM 概念:对象关系映射(Object Relational Mapping,简称ORM)

    2、ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据;

  django 模型映射关系:

    1、模型类必须写在 app 下的 models.py 文件里;

    2、模型如果需要映射到数据库,所在的 app 必须被注册(在主目录的 settings.py 文件中的 INSTALLED_APPS 中添加该 app 名);

    3、一个数据表对应一个模型类,表中的字段,对应模型中的类属性;

二、数据库连接配置:

  数据库配置:

    在主目录的 settings.py 中配置 DATABASES:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'mydb', #数据库名称
'USER': 'user', # 链接数据库的用户名
'PASSWORD': 'password', # 链接数据库的密码
'HOST': '127.0.0.1', # mysql服务器的域名ip地址
'PORT': '', # mysql的一个端口号,默认是3306
}
}

    设置时区:再主目录中的 settings.py 中设置 TIME_ZONE = 'Asia/ShangHai' # 北京时间

  创建一个管理员用户taka账号,密码为 taka:   

CREATE USER 'taka'@'%'IDENTIFIED BY 'taka';

  给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。    

GRANT ALL ON *.* TO 'taka'@'%';

  使授权立即生效:   

FLUSH PRIVILEGES;

  pymysql 数据库链接器的配置:

    安装:pip install pymysql

    在主目录下的 __init__.py 文件添加:

import pymysql 

pymysql.install_as_MySQLdb()

三、模型的创建与映射:

  使用 django 中的模型:

    每一个模型都是django.db.models.Model 的子类

    在 app 下面的 models.py 中创建 django 的模型类:

    注:这个 __str__ 方法的作用是我们在查询是看到的东西

  常用的模型字段:

    IntegerField : 整型,映射到数据库中的int类型。

    SmallIntegerField : 小整形

    CharField: 字符类型,映射到数据库中的varchar类型,必须通过max_length指定最大长度。

    TextField: 文本类型,映射到数据库中的text类型。

    BooleanField: 布尔类型,映射到数据库中的tinyint类型,在使用的时候,传递

True/False进去。如果要可以为空,则用NullBooleanField。

    DateField: 日期类型,没有时间。映射到数据库中是date类型,在使用的时候,可

以设置- - DateField.auto_now每次保存对象时,自动设置该字段为当前时间。设置

    DateField.auto_now_add当对象第一次被创建时自动设置当前时间。

    DateTimeField: 日期时间类型。映射到数据库中的是datetime类型,在使用的时候,传

递datetime.datetime()进去

  字段常用的参数:

    primary_key: 指定是否为主键。

    auto_increment:自增长

    unique: 指定是否唯一。

    null: 指定是否为空,默认为False。

    blank: 等于True时form表单验证时可以为空,默认为False。

    default: 设置默认值。

    verbose_name:备注;也可以直接写在第一位不用加参数

    DateTimeField(DateField)—— auto_now=True:

      每次修改都会将当前时间更新进去,只有调用,QuerySet.update方法将不会调用。这个参数只是Date和DateTime以及TimModel.save()方法才会调用e类才有的。

    DateTimeField(DateField)—— auto_now_add=True:

      第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值。

  将模型类映射到数据库:

    在执行命令前,保证创建模型的 app 是已经注册过的 app;

    1、首先执行以下命令,会创建映射文件:

python manage.py makemigrations

      该命令后面可以跟 app 名称,表示指定对某个 app 的模型进行映射,没写所有的 app 都执行。

python manage.py sqlmigrate app_name 0001 # app_name时app的名字,0001 是映射文件的前缀

      执行该命令可以看到执行的 sql 原生语句

    2、再执行以下命令,将映射文件中的映射数据提交到数据库中

python manage.py migrate

      该命令后面可以跟 app 名称,表示指定对某个 app 的模型进行迁移,没写所有的 app 都执行。

  将模型类映射到数据库:

    打开数据我们能看到创建的以 app 名 _模型名的数据表,而其他的一些表格是 django 自动生成的;

    注意:如果要删除表,那么可以去 django 模型中注释掉模型类,然后执行映射的命令,不要手动再命令行里面去删除;

四、数据的 增-删-改-查:

  调试工具:在根目录执行:

    先安装ipython:pip install ipython

python manage.py shell

   再视图函数中导入 创建的 模型类,然后使用下面的方法实现增,删,改,查操作数据;

增:

查:

    注:通过print可以在后台看到我们访问到的数据,并且输出方式就是模型中的__str__的格式.

  all() 和 filter() 方法返回的是 QuerySet 对象;

  get() 方式返回的单个对象,如果符合条件的对象有多个,则 get 报错!

改:

删:

Django 学习第六天——Django模型基础第一节的更多相关文章

  1. 六、Django模型基础第一节

    1 数据库的连接配置 django 连接mysql的配置流程: 安装 pymysql pip install pymysql 创建数据库用户 '; grant all on *.* to 'xiang ...

  2. Django学习系列之Form基础

     Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...

  3. Django学习之django自带的contentType表 GenericRelation GenericForeignKey

    Django学习之django自带的contentType表   通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...

  4. day 94 Django学习之django自带的contentType表

    Django学习之django自带的contentType表   通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...

  5. day 93 Django学习之django自带的contentType表

    Django学习之django自带的contentType表   通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...

  6. Django学习之django自带的contentType表

    Django学习之django自带的contentType表 通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/aar ...

  7. day 91 Django学习之django自带的contentType表

      Django学习之django自带的contentType表   通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net ...

  8. Django学习---Web框架及基础知识

    Django学习---Web框架 web框架的本质 我们在学socket,我们创建一个socketserver,然后运行起来,有一个client客户端要连接socket服务端,连接上之后,如果两边都没 ...

  9. django学习-10.django连接mysql数据库和创建数据表

    1.django模型 Django对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle. Django为这些数据库提供了统一的调用API. 我们可以根据自己 ...

随机推荐

  1. mac 端口占用问题

    查看端口号 终端输入:sudo lsof -i tcp:port 将port换成被占用的端口(如:8086.9998) 将会出现占用端口的进程信息. 杀死占用端口的PID进程 找到进程的PID,使用k ...

  2. 放一点百度来的,常见的windowserror

    0操作成功完成.1功能错误.2系统找不到指定的文件.3系统找不到指定的路径.4系统无法打开文件.5拒绝访问.6句柄无效.7存储控制块被损坏.8存储空间不足,无法处理此命令.9存储控制块地址无效.10环 ...

  3. linux学习笔记:第二单元 UNIX和Linux操作系统概述

    第二单元 UNIX和Linux操作系统概述 UNIX是什么 UNIX操作系统的特点 UNIX 与Linux的关系 GNU项目与自由软件 GUN计划 自由软件意味着什么 Linux简介 Linux是什么 ...

  4. exec与match方法的区别

    http://www.cnblogs.com/xiehuiqi220/archive/2008/11/05/1327487.html var someText= "web2.0 .net2. ...

  5. 【kafka】生产者速度测试

    非常有用的参考博客:http://blog.csdn.net/qq_33160722/article/details/52903380 pykafka文档:http://pykafka.readthe ...

  6. codeforce 240E 最小树形图+路径记录更新

    最小树形图的路径是在不断建立新图的过程中更新的,因此需要开一个结构体cancle记录那些被更新的边,保存可能会被取消的边和边在旧图中的id 在朱刘算法最后添加了一个从后往前遍历新建边的循环,这可以理解 ...

  7. 20165314 2016-2017-2 《Java程序设计》第9周学习总结

    20165314 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 URl类 UDP数据报 广播数据报 套接字 套接字连接机制 代码托管

  8. springboot配置Druid监控

    整体步骤: (1)    ——   Druid简单介绍,具体看官网: (2)     —— 在pom.xml配置druid依赖包: (3)    ——  配置application.propertie ...

  9. 步步为营-104-SQL语句(截取字符串)

    按照指定字符截取字符串,截取出300 业务需求:想比对图片中框线部分是否一致 第一步 从最后一个/截取到末尾 select top 1 reverse(substring(reverse(Proces ...

  10. JAVA 程序编译过程;编辑器,编译器和解释器

    最基本的软件工具包括,编辑器,编译器,解释器; 编译器:编译器就是将一种编程语言代码翻译成另一种语言的等效代码程序. 解释器:解释器将编译和执行交织在一起,即编译一部分代码后执行该部分代码,然后再编译 ...