热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入探讨Django模型与非模型应用的对比与选择

本文深入分析了Django框架中模型应用与非模型应用的区别与应用场景,详细对比了两者在数据处理、性能表现及开发灵活性等方面的特点。同时,文章还介绍了如何在视图函数中有效利用这些特性,结合PostgreSQL、MySQL、SQLite3和Oracle等不同数据库的配置与使用方法,为开发者提供了全面的参考指南。

postgresql 文档

postgresal_psycopg2 文档

mySQL 文档

sqlite3 文档

oracle 文档

no model

view里面一般是写视图函数的.将数据库中的内容直接拿出来放到视图里面,或是使用Django直接封装好的视图

conn = psycopg2.connect(database="postgres", user="postgres", password="1234", host="127.0.0.1", port="5432")cursor=conn.cursor()#光标指向开头cursor.execute('select name form boook order by name')#执行SQLname=[row[0] for row in cursor.fetchall()]conn.close()

1.
cursor.execute(sql [, optional parameters])
此例程执行SQL语句。可被参数化的SQL语句(即占位符,而不是SQL文字)。 psycopg2的模块支持占位符用%s标志 yiibai.com
例如:curs
2.
curosr.executemany(sql, seq_of_parameters)
该程序执行SQL命令对所有参数序列或序列中的sql映射。 or.execute("insert into people values (%s, %s)", (who, age))
3.
curosr.callproc(procname[, parameters])
这个程序执行的存储数据库程序给定的名称。该程序预计为每一个参数,参数的顺序必须包含一个条目。
cursor.rowcount
这个只读属性,它返回数据库中的行的总数已修改,插入或删除最后 execute*().
4.
connection.commit()
此方法提交当前事务。如果不调用这个方法,无论做了什么修改,自从上次调用commit()是不可见的,从其他的数据库连接
5.
connection.rollback()
此方法会回滚任何更改数据库自上次调用commit()方法。
6.
connection.close()
此方法关闭数据库连接。请注意,这并不自动调用commit()。如果你只是关闭数据库连接而不调用commit()方法首先,那么所有更改将会丢失
7.
cursor.fetchone()
这种方法提取的查询结果集的下一行,返回一个序列,或者无当没有更多的数据是可用的
8.
cursor.fetchmany([size=cursor.arraysize])
这个例程中取出下一个组的查询结果的行数,返回一个列表。当没有找到记录,返回空列表。该方法试图获取尽可能多的行所显示的大小参数。
9.
cursor.fetchall()
这个例程获取所有查询结果(剩余)行,返回一个列表。空行时则返回空列表

sqlite3空白即可,因为pycharm默认自带的sqlite,自动连接

model

Django使用数据库模型,必须使用webAPP

python manage.py startapp books

就要在APP的models里面建立数据库模型,常见的models就是books,这个模型,

from django.db import models# Create your models here.
class Publisher(models.Model):name=models.CharField(max_length=30)address=models.CharField(max_length=30)city=models.CharField(max_length=50)country=models.CharField(max_length=30)state_province=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=30)email=models.EmailField()
class Book(models.Model):title=models.CharField(max_length=30)authors=models.ManyToManyField(Author)publisher=models.ForeignKey(Publisher,on_delete=models.CASCADE,)publishion_date=models.DateField()def __unicode__(self):return u'%s %s' %(self.title,self.publishion_date)#这段没有运行过,我只添加了一#个#self.name

 

__unicode__是返回对象的字符串表示

多对一的关系需要两个参数,模型的类名以及on_delete不然会出现弃用警告

__init__() missing 1 required positional argument: 'on_delete'

APP,数据库搭建

#让Django知道有books这个app
python manage.py makemigrations books
#继续run这段代码,就完成了建表工作:
python manage.py sqlmigrate books 0001
#再跑一下migrate命令,把这些model创建到数据库表中
python manage.py migrate

#向数据库添加数据库
python manage.py shell
#或者是Navicat直接添加,我觉得Navicat直接添加比较好

 

p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',city='Berkeley', state_province='CA', country='U.S.A.',website='http://www.apress.com/')
P1.save()
#会自动添加ID主键

遇到了这种莫名其妙的问题,

后来发现添加了

class BookAdmin(admin.ModelAdmin):pass
admin.site.register(Book,BookAdmin)

就可以添加分组了,这个是模型的管理器.模型管理器可以添加一些有用的设置.将admin这个网站变成自己的网站


推荐阅读
  • MongoDB集群配置:副本集与分片详解
    本文详细介绍了如何在MongoDB中配置副本集(Replica Sets)和分片(Sharding),并提供了具体的步骤和命令,帮助读者理解并实现高可用性和水平扩展的MongoDB集群。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
author-avatar
ig56mkw
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有