2.3、django项目对数据库的操作

在讲django项目对数据库操作之前先看看MyOSS/MyOSS的几个文件吧。

/MyOSS

…__init__py #在python里,不管是class,还是django里的project和app都一个这个的文件,表示初始化该类或者模块

…settings.py #Django项目主要的配置文件,比如数据库引擎,数据库配置,语言,字符编码,支持的调试模式,时区,已经加载的模块,静态文件目录,根目录的URL配置等等。。

…models.py #Django项目数据库映射文件。

…urls.py #Django网页路径配置文件。

…wsgi.py #运行测试web环境,实际生产环境可改成nginx或者apache

2.3.1、文件代码参考:

Settings.py

需要成功安装MySQLdb

Models.py

测试用的是OSS_SanMao.oss_daka_stat表,数据模型可根据原有表修改或者自动生成。

Urls.py

Views.py

2.3.2、ORM(对象关系映射)

2.3.2.1、Django里也直接可以使用原生的SQL语句:

如:for p in usermember.objects.raw(‘select * from user_member’):

Print(p)

打印出来的是user_member中所有用户的信息。

简单的说,把要执行的SQL放在raw()里就可以了。

更详细的请参考:https://docs.djangoproject.com/en/1.5/topics/db/sql/

2.3.2.2、为什么使用ORM

Django和其他大多数web框架一样,依赖于数据访问层,可以将底层的关系数据库(如MySQL)和Python的面向对象特质联系起来。有以下优点:

ü  封装有用的方法:

Django的模型对象是定义一组变量,而变量通常是对应的是数据库的列。你可以定义只读的变量或属性组合;ORM允许重写内置的数据库修改方法,例如保存和删除对象,就可以在数据被保存到数据库之前轻易地对它进行任何操作。

ü  安全性:

如2.3.2.1,使用原始SQL语句进行查询,可能会产生不合格的或是保护性很差的查询字符串所导致的问题,例如SQL注入等;但是使用ORM后就不需要自己执行SQL查询,只需要使用ORM提供的智能化引入和转义输入变量的核心机制。

2.3.2.3、使用ORM

比如定义了一个module.py

class book(models.Model):

blog = models.ForeignKey(Blog)

headline = models.CharField(max_length=255)

body_text = models.TextField()

pub_date = models.DateField()

authors = models.ManyToManyField(Author)

n_comments = models.IntegerField()

rating = models.IntegerField()

def __unicode__(self):

return self.headline

下面简单介绍几个ORM对比SQL的例子

ü  select:

查找表book中所有数据

book.objects.all()等价于

SELECT * FROM book;

查找book表中所有数据并按authors排序

book.objects.order_by(‘authors’)等价于

SELECT * FROM book ORDER BY ‘authors’;

查找book表中pub_date=’2013-06-08’的所有数据

book.objects.filter(pub_date=’2013-06-08’)等价于

SELECT * FROM book WHERE pub_date=’2013-06-08’

查找book表中作者名字包含‘test’的所有数据

Book.objects.get(authors_ _contains=’test’)

SELECT * FROM book WHERE authors LIKE ‘test’

All:返回一个包含模式里所有数据库记录

Filter:返回一个包含符合指定条件的模型记录

Exclude:和filter相反

Get:获取单个符合条件的记录

更多请参考文档:https://docs.djangoproject.com/en/1.5/topics/db/queries/

2.3、django项目对数据库的操作

时间: 2024-08-26 04:34:37

2.3、django项目对数据库的操作的相关文章

三、数据库web项目对数据库的操作

1.0.JSTL与jsp实现对数据库的操作 MySql 数据库: create database if not exists CommodityDB; use CommodityDB; drop table if exists Commod; create table Commod( cid int primary key auto_increment comment '编号', cname varchar(64) not null comment '商品名称', cprice datetime

mac osx 上面部署Django项目 apache+mysql+mod_wsgi

1.安装Xcode command line tools 首先,编译mysql和Homebrew需要用到Xcode command line tools,所以首先安装command line tools: 如果安装了Xcode,只需要“Preferences… > Downloads”,之后点击Command Line Tools安装按钮: 如果没有Xcode,去https://developer.apple.com/downloads,搜索Command Line Tools 下载安装 2.安

django项目的生产环境部署,利用nginx+uwsgi

1.坏境准备 centos6.5 django项目 python坏境(python3.6,) 所需的各种模块(django,uwsgi,sqlite3)具体看坏境 我的测试django项目的数据库用的是sqlite,这里只是做部署, 重点是nginx的关于Django项目+uwsgi配置文件 本次的项目:teacher.zip 安装各种坏境 1.安装sqlite3 https://sqlite.org/2017/sqlite-autoconf-3180000.tar.gz tar sqlite-

Scrapy & Django项目

# 需求: 编写爬虫项目与Django项目详解和, 将爬取到的数据展示到前端页面上 # spider编写:import scrapyfrom dl.items import DlItemclass PSpider(scrapy.Spider): name = 'p' # allowed_domains = ['www.baidu.com'] start_urls = ['https://www.kuaidaili.com/free/'] def parse(self, response): #

Django项目实践3 - Django模型(数据库字段及操作)

http://blog.csdn.net/pipisorry/article/details/45725953 数据库字段 时间字段 DateTimeField和DateField和TimeField存储的内容分别对应着datetime(),date(),time()三个对象. auto_now=Ture,字段保存时会自动保存当前时间,但要注意每次对其实例执行save()的时候都会将当前时间保存,也就是不能再手动给它存非当前时间的值. auto_now_add=True,字段在实例第一次保存的时

关于Django中的数据库操作API之distinct去重的一个误传

关于Django中的数据库操作API之distinct去重的一个误传 最近在做一个Server的项目,后台框架是Apache mod_wsgi + django.django是一个基于Python的Web开发框架,功能十分强大,至于有多强大,还是读者们自己去体验吧.我在这里要说的一个问题是关于Python的ORM功能的.问题就在django提供的数据库操作API中的distinct()函数,了解SQL语句的读者都应该知道,DISTINCT关键字可以在select操作时去重.django里的这个d

django基础之数据库操作

Django 自称是"最适合开发有限期的完美WEB框架".本文参考<Django web开发指南>,快速搭建一个blog 出来,在中间涉及诸多知识点,这里不会详细说明,如果你是第一次接触Django ,本文会让你在感性上对Django有个认识,完成本文操作后会让你有兴趣阅读的相关书籍和文档. 本博客操作的环境,如无特别说明,后续博客都以下面的环境为基础: =================== Windows 7/10 python 3.5 Django 1.10 ====

Django 项目基础操作总结

1. 下载: 命令行: pip install django==1.11.15 pip install -i 源 django==1.11.15 pycharm settings 解释器 点+号 输入django 选择版本 2. 创建django项目 1. 命令行 cd 保存项目的目录 django-admin startproject 项目名 2. pycharm file --> new project --> 选择django --> 选择解释器 --> 创建django项目

django 中连接mysql数据库的操作步骤

django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'orm02', # 库的名字 'USER':'root', # 数据库的用户名 'PASSWORD':'666', # 数据库的密码 'HOST':'127.0.0.1', 'PORT':3306, } } 2 项目文件夹下的init文件中写上下面内容,用pymysql替