先看一下数据库模型之间的对应关系:
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数据库框架: 1. **SQLite3**:这是Python的标准库之一,无需服务器,轻量级,适合小型应用或测试。面试时可能会询问如何创建数据库、表,以及如何进行CRUD(创建、读取、更新、...
它们允许开发者定义数据库模型,就像定义Python类一样,然后自动将这些模型转换为相应的SQL语句。这种方式更加面向对象,可读性更强,且易于维护。 4. **连接管理**:在处理数据库时,确保正确地打开和关闭连接至关...
《Python数据库实战(第2版)》是一本深入探讨如何使用Python进行数据库操作的书籍,其源代码资源为读者提供了丰富的实践素材。Python作为一种多用途的编程语言,不仅在Web开发、数据分析等领域广泛应用,也在数据库...
通过ER图,我们可以更好地理解数据模型和实体间的联系,为后续的数据库创建和使用奠定基础。 SQL建库源码是用于创建这些表的SQL语句集合,包括CREATE TABLE语句来定义表结构,以及可能的INDEX和FOREIGN KEY约束来...
### Python数据库操作:SQLAlchemy教程 #### 一、Python环境搭建与SQLAlchemy安装 ##### 1.1 Python环境搭建 **原理与内容:** - **Python简介:**Python是一种广泛使用的高级编程语言,以其简洁和易读性著称。...
关系型数据库采用关系模型,即二维表格形式,包含数据表、记录和字段。数据表是存放数据的表格,记录由多个字段组成,每个字段表示数据的含义。MySQL在Ubuntu上可以通过`apt-get`命令安装,而在Windows系统中则需...
本资料"Python数据库操作库研究.zip"可能包含了一篇详细探讨这些库的PDF文档,让我们深入了解一下其中可能涉及的关键知识点。 1. **SQLite**:SQLite是一个轻量级的嵌入式数据库,无需单独服务器进程,可以直接在...
DAO(Data Access Objects)是一种早期的数据访问技术,它允许程序员通过对象模型来访问存储在Microsoft Jet数据库引擎中的数据。尽管DAO可能被认为是过时的技术,但在某些场景下依然有用武之地。 ##### 实现步骤:...
在数据库模型部分,我们学习了如何定义数据库模型,这是通过创建Python类并将它们映射到数据库表中来实现的。在模型中,每个属性都可以映射到一个数据库字段,并且可以指定字段类型和大小等属性。模型中的id字段通常...
总之,"物业管理系统,Python数据库课程设计"涵盖了Python Web开发和数据库管理的核心概念,包括Python Web框架的使用、SQL Server数据库的设计与操作、以及安全性和性能优化等多方面知识。对于学习者来说,这是一个...
这个系统涵盖了Web开发中的许多关键概念和技术,包括模型-视图-控制器(MVC)架构、数据库交互、用户认证与授权、表单处理和模板渲染等。 首先,Django是Python的一款流行Web开发框架,它遵循MTV(Model-Template-...
理解关系型数据库模型和SQL语言,它是与数据库沟通的语言。 3. **Python数据库接口**: - **sqlite3模块**:Python内置的SQLite库,无需额外安装,适用于轻量级应用或开发测试。学习如何创建连接、执行SQL语句、...
通过以上步骤,我们可以利用Python实现Fama-French模型,进行资产定价分析,这对于投资策略的制定和风险管理具有重要意义。在金融研究和实践中,这些模型被广泛应用于检验市场效率、构建投资组合和评估投资策略的...
1. **Python数据库接口**:Python提供了多种数据库接口,如SQLite、MySQLdb、pymysql、psycopg2等。在这个项目中,我们可能会使用到SQLite,这是一个轻量级的嵌入式数据库,适合小型应用和学习用途。 2. **SQLite...
基于Tensorflow搭建CNN卷积神经网络+CK数据库实现表情识别python源码+模型.zip基于Tensorflow搭建CNN卷积神经网络+CK数据库实现表情识别python源码+模型.zip基于Tensorflow搭建CNN卷积神经网络+CK数据库实现表情识别...
SQLAlchemy Python SQL 工具包和对象关系映射器介绍SQLAlchemy 是 Python SQL 工具包和对象关系映射器,它为应用程序开发人员提供了 SQL 的全部功能和灵活性。SQLAlchemy 提供了一整套众所周知的企业级持久性模式,...
《基于Python的英汉电子词典软件源码数据库解析》 在信息技术日益发达的今天,电子词典已经成为了学习者的重要工具。而基于Python开发的英汉电子词典软件源码数据库,则为开发者提供了一个宝贵的资源,使得我们可以...
在IT领域,数据库管理系统是至关重要的工具,它们用于存储、管理、检索和更新数据。而Python作为一种强大且易学...通过深入研究这些源代码,你可以提升自己在Python数据库开发方面的技能,更好地理解和应用数据库技术。
本项目利用Python结合流行的前端组件CanvasJS,实现了从SQLite数据库中提取数据并以动画效果展示的动态图表,具有美观、实用且易于集成的特点。 首先,我们要了解Python中的数据处理库。在这个项目中,可能使用了`...