先看一下数据库模型之间的对应关系:
Author n:n Book n:1 Publisher
然后看看在python项目中的models.py中如何表示:
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60)
state_province = models.CharField(max_length=30)
country = models.CharField(max_length=50)
website = models.URLField()
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True,verbose_name='e-mail')
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField(blank=True, null=True)
下面看看如何插入数据:
方法一:
p1 = Publisher(name='Addison-Wesley', address='75 Arlington Street',city='Boston', state_province='MA', country='U.S.A.',website='http://www.apress.com/')
p1.save()
方法二:
p1 = Publisher.objects.create(name='Apress',address='2855 Telegraph Avenue',city='Berkeley', state_province='CA', country='U.S.A.',website='http://www.apress.com/')
更新数据:
方法一:
p1.name = 'Apress Publishing'
p1.save()
方法二:
Publisher.objects.filter(id=1).update(name='Apress Publishing')
[color=red]注意:
第一种方法更新数据库中所有的字段,
生成数据库语句是:
UPDATE book_publisher SET
name = 'Apress Publishing',
address = '2855 Telegraph Ave.',
city = 'Berkeley',
state_province = 'CA',
country = 'U.S.A.',
website = 'http://www.apress.com'
WHERE id = 52;
第二种数据库语句是:
UPDATE books_publisher
SET name = 'Apress Publishing'
WHERE id = 52;
[/color]
更新所有记录
Publisher.objects.all().update(country='USA')
下面是选择对象:
Publisher.objects.all() 选择所有
Publisher.objects.filter(name= ‘ Apress ’ ) 数据过滤
Publisher.objects.filter(name__contains="press")
Publisher.objects.get(name= “ Apress ” ) 获取单个对象
注意: filter()`` 函数返回一个记录集,这个记录集是一个列表 QuerySet 。相对列表来说,有些时候我们更需要获取单个的对 象, 用 `` get()`` 方法。
Get ()方法:
如果结果是多个对象,会导致抛出异常;
如果查询没有返回结果也会抛出异常。
contains转换成数据库语句是like
下面是删除对象:
p = Publisher.objects.get(name="dddddddddddd")
p.delete()
或者
Publisher.objects.filter(country='USA').delete()
Publisher.objects.all().delete()
下面是访问外键---一对多访问:
b = Book.objects.get(id= 1 )
b.publisher
b.publisher.website
访问外键---多对一访问:
p = Publisher.objects.get(name='Apress Publishing')
p.book_set.all()
p.book_set.filter(name__icontains='django')
访问外键---多对多访问:
b = Book.objects.get(id= 2 )
b.authors.all()
b.authors.filter(first_name='Adrian')
b.authors.filter(first_name='Adam')
访问外键---多对多访问(反向):
a = Author.objects.get(first_name='Adrian', last_name='Holovaty')
a.book_set.all()
大家可能纳闷什么时候用xxx_set来得到想要的对象呢?
其实可以回去看看models.py,其中book中有这两句:
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
所以当模型中有约束则用b.publisher和b.authors.all(),相反模型中没有约束就用a.book_set.all()等。
分享到:
相关推荐
Python pymysql dbmodelClass数据库模型封装类(python version 3.7)
python读取oracle数据库,封装简单模型,提供restful接口,供其他程序调用
大概思路是,首先压测软件测试出系统的性能基线(这里指基于io系统)的iops,这个iops定义为系统性能容量的最大值, 然后结合系统响应时间和动态iops来判断系统的性能容量使用情况,而且会根据tcpdump+pt-query-...
本文既适合Flask和Python开发的初学者从零开始学习数据库操作,也适合想要 Refresh 和参考Flask数据库访问代码的爱好者。掌握数据库操作是Web开发的基础。 能学到什么: 通过学习可以掌握在Flask中进行数据库连接、...
python实现FamaFrench三因子和五因子模型,需要借助wind金融终端提取数据。
2021年秋季学习数据库课程的作业项目:基于PythonDjango模型的学生选课系统.zip
本系统要实现基于人脸识别的考勤打卡所以使用Python下的Opencv,Flask以及Mysql数据库来实现考勤系统人脸识别验证的功能。首先对Opencv下的LPBH,Eigenfaces和Fisherfaces三种人脸识别算法分别进行模型训练和测试,...
画出ER模型图 3、数据库逻辑设计 把ER模型图转换为关系表。 描述每一个基本表关系。要求所有关系达到BCNF范式。 定义视图、定义索引、主关键字、定义权限。 4、软件功能设计 画出软件功能图。 描述每一个功能所完成...
本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路。效果演示在项目实战最后一节,文章结尾有整个项目的源码地址。 ...
基于深度学习的智能监考系统的实现与设计python源码+项目说明+模型+数据+数据库.zip基于深度学习的智能监考系统的实现与设计python源码+项目说明+模型+数据+数据库.zip基于深度学习的智能监考系统的实现与设计python...
基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及...
模型映射到数据库 $ python manage.py db init $ python manage.py db migrate $ python manage.py db upgrade 初始化role,status,dept表 在数据库控制台执行init.sql的SQL语句 初始化user表 1.取消user.py文件视图...
框架:python + tk +CNN 模型+ RNN 模型 角色介绍:无 训练模型模块 载入模型检测 输出结果模块 CNN 模型和 RNN 模型+的集成检测模型。集成检测模 型由字符嵌入层、特征提取层和分类层三部分组成。字符嵌入层...
Deliver the ready-to-train data to your NLP model.
Django模型字段加密/解密您的数据,并加密保存至数据库中
Python 案例-基于RFM的用户价值度模型和基于AdaBoost的营销响应预测,依赖库:time、numpy、pandas、mysql.connector 程序输入:sales.csv 程序输出:RFM得分数据写本地文件sales_rfm_score.csv和数据表(sales_...
毕业设计:python基于改进高斯混合模型的图割算法(源码 + 数据库 + 说明文档) 二、 基于模型的图像分割 4 (一) 基础知识 4 1. 高斯分布 4 2. 高斯分布参数估计 4 (二) 高斯混合模型 4 (三) 基于马尔科夫随机场的...
毕业设计:Python旅游景点方面级别情感分析语料库建设与模型实现(源码 + 数据库 + 说明文档) 第二章 相关开发技术介绍 7 2.1 Python技术 7 2.2 MVC框架 7 2.3 B/S结构 8 2.4MySQL数据库 8 第三章 可行性分析及需求...
PythonWeb从入门到实战教程之4数据模型与数据库