Django 数据库ORM操作 - 单表的创建,增加,删除,更改和查询

Django里面,管理数据库和sqlarchemy类似,也是通过orm框架来实现的。所有的数据库的建立,都是在model.py里面通过类来实现的。

首先看看如何创建一个单表:

a. 先定义一个类,继承models.Model, 然后根据需求定义参数,这些参数的类型和变量后面会进一步阐述

models.py

from django.db import models

class UserInfo(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)

b. 注册app

settings.py

INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘app01‘,
]

c.执行命令。 第一条命令会生成一个初始化文件,第二个命令会生成对应的表

python manage.py  makemigrations
python manage.py  migrate

这样,就在PyCharm自带的sqlite数据库里面成功的生成了一个app01_UserInfo的表。这个表默认会有一个自增的id作为主键,另外两个字段是我们通过类创建的。

d. 如果希望使用mysql,因为Django默认使用了MySqldb模块,这个在3.0版本里面不存在,会直接报错。我们需要改为pymysql的模块,方法如下:

在project同名文件夹下的__init__文件中添加如下代码即可:

import pymysql

pymysql.install_as_MySQLdb()

2. 对于单表的增删改查询

查询

获取所有结果,获取到的结果是一个QuerySet的类似列表的对象,每一个元素本身又是一个对象,包括了id,name,password等属性。

obj = models.UserInfo.objects.all()

<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>

可以通过filter进行过滤,相当于sql的where语句,因为结果也是QuerySet,因此需要再使用first()获取第一个值

 obj = models.UserInfo.objects.filter(id=nid).first()

增加

models.UserInfo.objects.create(username=u,password=p,user_group_id=3)

删除,可以在filter的基础上进行删除

models.UserInfo.objects.filter(id=nid).delete()

修改,有两种常见方式

第一个方式

models.UserInfo.objects.filter(id=nid).update(username=u,password=p)

第二个方式

obj=models.UserInfo.objects.filter(id=nid)
obj.username=u
obj.save()
时间: 2024-10-04 01:31:32

Django 数据库ORM操作 - 单表的创建,增加,删除,更改和查询的相关文章

django 利用ORM对单表进行增删改查

牛小妹上周末,一直在尝试如何把数据库的数据弄到界面上.毕竟是新手,搞不出来,文档也看不懂.不过没关系,才刚上大学.今晚我们就来解释下,要把数据搞到界面的第一步.先把数据放到库里,然后再把数据从库里拿出来. 以下内容,参考django官方文档 . 1.创建MODEL 这里和官方文档一致.直接拷出来,放到一个叫models的py文件里面.若是你的项目中没有,一定不要觉得无处写代码.你自己建一个即可 同步数据库: 执行以下命令.不懂的可以参考:django连接mysql python manage.p

Django 数据库ORM操作

CMDB实现数据展示功能部分代码. views.py def asset(request):     asset = Asset.objects.all()     return render_to_response("asset.html",{'asset': asset})      models.py class Asset(models.Model):     ipaddr = models.CharField(max_length=20, verbose_name=u'IP地

Django 数据库ORM 操作 - 字段的类型和参数

通过Django的ORM创建表的时候,我们需要定义自己的类. 定义类的时候,他有各种各样的字段类型,每个字段都有自己的参数可以进行配置,下面简单的归纳一下. 首先看看字段的类型.尽管Python提供了近乎20种类型,他转换成数据库表之后,其实本质就是4个类型:字符串,数字,时间和二进制. AutoField(Field)     - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField)     - bigint自增列,必须填入参数 prim

Django模型层之单表操作

Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql.oracle.Microsoft SQL Server等. 如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库,详见图一^①^ 但是直接编写原生sql语句会存在两方面的问题,严

Django的orm操作数据库

Django的orm操作数据库 django学习链接:https://www.cnblogs.com/clschao/articles/10526431.html 单表操作学习链接:https://www.cnblogs.com/clschao/articles/10427807.html about mvc或者mvc框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,

【Django】ORM操作#2 &#343866;

目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 关于Mate类 聚合查询 aggregage() 分组查询 annotate() F查询 Q查询 事务 其它鲜为人知的操作 原文: http://blog.gqylpy.com/gqy/264 @ *** 必知必会的13条查询方法 ==1. all()== 查询所有结果 . ==2. get(kw

Django之ORM操作(***)

Django之ORM操作(***) 生成数据库: python manage.py makemigrations python manage.py migrate 常用命令: python manage.py runserver 0.0.0.0 python manage.py startapp appname python manage.py syncdb 创建superuser:python manage.py createsuperuser 在项目名中的__init__ .py 加: im

持久化API(JPA)系列(八)实体关系映射(ORM)之单表映射@EmbeddedId

接上文<持久化API(JPA)系列(七)实体关系映射(ORM)之单表映射@IdClass> 本文将介绍<联合主键:使用@EmbeddedId嵌入外部主键> 上文是通过@IdClass引用外部主键,联合主键也可以采用嵌入式主键替代. 1)新建外部主键类Family2.java 设置联合主键man和woman,因此外部主键也需要定义两个相同的变量,并添加一个以两个变量为输入的构造函数,同时添加getter/setter函数. 主键类必须满足: 1.必须实现Serializable接口,

SQL数据库的操作,表的操作

数据库定义语言(DDL):用于对数据库及数据库中的各种对象进行创建,删除,修改等操作 (1)create:用于创建数据库或数据库对象 (2)alter:用于对数据库或数据库对象进行修改 (3)drop:用于删除数据库或数据库对象 1.创建数据库 在MySQL中可以使用 create database 或 create schema语句创建数据库 create  database 或 schema [ if not exists ]  数据库名 if not exists :如果不存在 creat