48.Python中ORM模型实现mysql数据库基本的增删改查操作
首先需要配置settings.py文件中的DATABASES与数据库的连接信息,
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'orm_intro_dem',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
之后将创建的app添加到settings.py文件中的INSTALLED_APPS中,在app的models.py文件中创建app自己的模型,并且进行与数据库之间的映射。
models.py文件中的内容:
from django.db import models
from datetime import datetime
# 如果要想一个python中定义的类,能够成为一个可以映射到数据库中模型,
# 就要让这个类继承models.Model
class Book(models.Model):
name = models.CharField(max_length=100, null=False)
author = models.CharField(max_length=100, null=False)
datetime = models.DateTimeField(null=False, default=datetime.now())
price = models.FloatField(null=False, default=0)
# 之后在终端命令行模式,进入项目所在的目录中,执行命令:python manage.py makemigrations和python manage.py migrate;
# 在我们的mysql数据库中就可以看到模型映射生成的表。
在app的views.py文件中定义视图函数,调用刚才定义的ORM模型,进行数据库的增删改查操作。
1.添加数据,示例代码如下:
from django.shortcuts import render
# 要想使用定义的ORM模型,首先要先进行导入
from .models import Book
def index(request):
# 1.添加图书信息,因为ORM模型是通过对象来操作对象的属性,进而可以达到操作数据中的字段的效果。
book = Book(name='西游记', author='吴承恩', price='160')
# # 调用save()函数,将数据保存到数据库中的表中
book.save()
return render(request, 'index.html')
2.查询数据,示例代码如下:
from django.shortcuts import render
# 要想使用定义的ORM模型,首先要先进行导入
from .models import Book
def index(request):
# 2.查询操作
# 2.1 通过主键进行查找
# 如果没有自定义查找操作的方法,django默认是使用objects()方法进行查找
# 此处的pk代表的是primary key,
book = Book.objects.get(pk=2)
# # 打印进行查看,输出结果为:Book object (2)
print(book)
# 如果要想显示出具体的内容,就可以通过重写类的str方法(python内置的)在models.pyw文件中的Book类中进行重写
# 此时在终端运行的窗口就打印出:<Book:(三国演义, 罗贯中, 180.0, 2020-01-19 14:24:28.900975+00:00)>
# 2.2 通过条件进行查询
# 如果查询出来的结果有多条数据满足,还可以嗲用first()函数,只返回第一条数据
books = Book.objects.filter(name='三国演义').first()
print(books)
# 使用filter()方法进行查找,返回的是一个“QuerySet”对象,这个对象类似于列表,
# 我们可以使用这个对象的“first”方法来获取第一个满足的值。
return render(request, 'index.html')
models.py文件中重写对象的__str__()方法,示例代码如下:
from django.db import models
from datetime import datetime
# 如果要想一个python中定义的类,能够成为一个可以映射到数据库中模型,
# 就要让这个类继承models.Model
class Book(models.Model):
name = models.CharField(max_length=100, null=False)
author = models.CharField(max_length=100, null=False)
datetime = models.DateTimeField(null=False, default=datetime.now())
price = models.FloatField(null=False, default=0)
def __str__(self):
return "<Book:({name}, {author}, {price}, {datetime})>".format(name=self.name, author=self.author, price=self.price, datetime=self.datetime)
3.删除图书数据信息,示例代码如下:
from django.shortcuts import render
# 要想使用定义的ORM模型,首先要先进行导入
from .models import Book
def index(request):
# 3.删除图书,通过主键获取数据信息,之后对象调用delete()方法进行删除
book = Book.objects.get(pk=3)
book.delete()
return render(request, 'index.html')
4.修改数据,示例代码如下:
from django.shortcuts import render
# 要想使用定义的ORM模型,首先要先进行导入
from .models import Book
def index(request):
# 4.修改数据
book = Book.objects.get(pk=2)
# 将对象的属性直接赋予新的值,并进行保存,就可以进行修改数据信息了
book.price = 100
book.save()
return render(request, 'index.html')
48.Python中ORM模型实现mysql数据库基本的增删改查操作的更多相关文章
- 【Python + Mysql】之用pymysql库连接Mysql数据库并进行增删改查操作
用pip下载pymysql并引用 具体请参考文章: <Python之MySQL数据库增删改查操作> <python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删 ...
- java连接mysql数据库 三 实现增删改查操作
同以前一样,先写一个数据库打开和关闭操作类 public class DBConnection { String driver = "com.mysql.jdbc.Driver"; ...
- Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
- Vc数据库编程基础MySql数据库的表增删改查数据
Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...
- 在C#的控制台应用中使用Dapper链接MySQL并执行一些增删改查
一.首先先创建一个C#的控制台应用 二.然后添加上必要的命名空间 using System;using System.Collections.Generic;using MySql.Data.MySq ...
- mysql数据库单表增删改查命令
数据库DB-database-mysql 课程安排 第一天: 1.数据库定义以及设计 2.mysql服务端的安装 3.mysql-dos操作 库的操作 表的操作 4.mysql客户端navicate工 ...
- MySQL基本概念及增删改查操作
SQL.DB.DBMS关系 DB: DataBase(数据库,数据库实际上在硬盘上以文件的形式存在) DBMS: DataBase Management System(数据库管理系统,常见的有:MyS ...
- 利用SQLiteOpenHelper创建数据库,进行增删改查操作
Android中提供SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象.继承和扩展SQLiteOpenHelper类主要做的工作就是重写 ...
- MySQL数据库(安装+增删改查)
一. 安装 下载地址 : https://dev.mysql.com/downloads/mysql/ 1. 安装步骤 (1) 选择5.7版本 (2) 针对操作系统的不同下载不同的版本 (3) 解压 ...
随机推荐
- windows10 CTCP
windows上除了普通tcp之外,有一个CTCP. 据说可以提升长延时情况下的吞吐量. win7可以方便的通过netsh int tcp set global congestionprovider= ...
- malloc返回地址的对齐问题
http://man7.org/linux/man-pages/man3/malloc.3.html RETURN VALUE top The malloc() and calloc( ...
- 深入理解幂等性及Restful风格API的幂等性问题详解
什么是幂等性 HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外).也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同. ...
- GNU make doc - 函数总结
$(value variable) 使用variable未展开状态的值 FOO = $(PATH) all: $(warning $(FOO)) $(warning $(value FOO)) #ou ...
- springBoot2.x启动项目报java.sql.SQLNonTransientConnectionException
将项目从springBoot1.x升级到springBoot2.x,启动报错: java.sql.SQLNonTransientConnectionException: Cannot load con ...
- mysql添加索引(建表之后)
一.使用ALTER TABLE语句创建索引 语法如下: alter table table_name add index index_name (column_list) ; alter table ...
- Linux 实时查看日志文件动态内容
tailf 27.log | grep 'Classcomment/praise' 'Classcomment/praise' 接口名:查看请求固定接口的时间,实时 tai ...
- EF--EntityState相互转换
EF对数据做什么样的操作,是根据EF的上下文实体状态决定,实体状态有以下5种状态,下面我们就分别看下这5种状态 数据准备,我们看到学生表里有20000名学生记录,最后1位学生的学生编号为0000020 ...
- Node.js文档-模块
核心模块 Node为Javascript提供了很多服务器级别的API,绝大多数都被包装到了一个具名的核心模块中,例如文件操作的fs核心模块,http服务构建的http模块等,核心模块的使用必须通过re ...
- em和rem区别
em大小依据父元素的字体大小的倍数 rem大小依据与根元素,即html标签的font-size大小