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) 解压 ...
随机推荐
- sparc v8 stack frame calling convention
main.c ; int main() { int a, b; int sum; a = ; b = ; sum = add(a, b); ; } int add(int a, int b) { in ...
- C#的静态工厂方法与构造函数对比
最近,在与同事进行协同编程时,我们开始讨论在C#中初始化新对象的最佳方法.我一直是使用构造函数实现,尽管他倾向于静态工程方法.这引起了关于每种类型的利弊的大量来来回回的讨论. 为了说明我所说的内容,这 ...
- Load_file 常用路径
load_file 常用路径 WINDOWS下: c:/boot.ini //查看系统版本 c:/windows/php.ini //php配置信息 c:/windows/my.ini //MYSQL ...
- 浮动和包含框的关系,伪元素after解决高度塌陷
浮动会使元素尽量向左或向右移动,直到碰到包含框或另外一个浮动元素的盒子模型的边缘 包含框并不会改变里面浮动元素的宽高,浮动元素宽高不会限制在包含块以内 <!DOCTYPE html> &l ...
- JS求1到100的累计值
sum=0 for(i=1;i<=100;i++) { sum+=i } alert(sum) 作者:kerwin-chyl 文章链接:https:////www.cnblogs.com/k ...
- Python学习小记(5)---Magic Method
具体见The Python Language Reference 与Attribute相关的有 __get__ __set__ __getattribute__ __getattr__ __setat ...
- git中常混淆的操作
1, git fetch 和 git pull 参考链接: https://stackoverflow.com/questions/292357/what-is-the-difference-betw ...
- 解决IIS程序池回收webapi定时程序造成的影响
问题描述: webapi中有一个定时器线程,在iis程序池在1740分钟回收后,定时器中止 问题解决步骤: 1.设置程序池定期回收,设置每天定时回收 2.在windows自带的任务计划中,添加一条任务 ...
- linux中shell内置命令和外置命令
shell内置命令 无法通过which或者whereis去查找命令的位置 例如cd,cp这些命令是shell解释器内置的命令 当shell内置命令传入shell解释器,shell解释器通过内核获取相关 ...
- pycharm中新建Vue项目时没有vue.js的解决办法
可能很多小伙伴在使用pycharm 1,新建vue项目的时候并没有发现vue.js的名字, 2,新建.vue文件(即单文件组件)的时候没有 下面就来帮助大家一下,仅供参考 如图: 1.首先我们打开设置 ...