热门标签 | 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这个网站变成自己的网站


推荐阅读
  • 主调|大侠_重温C++ ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ... [详细]
  • 本文详细介绍了如何在Linux系统中创建和管理DB2数据库,包括用户切换、数据库创建、错误处理、连接与断开、表空间和缓冲池的创建,以及用户权限管理和数据导入导出等操作。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 如何处理MySQL命令行中文乱码问题
    本文详细探讨了MySQL命令行中出现中文乱码的原因及解决方案,通过调整配置文件和执行特定SQL命令来确保字符集正确设置,为用户提供了一个有效的解决路径。 ... [详细]
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社区 版权所有