django中数据库的相关操作
一、使用环境
python2.7,django>1.7
二、数据库进行配置
在setting文件中进行修改
1、找到DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'studentInfo', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '123456', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '',
}
}
2、找到INSTALLED_APPS,添加创建的app名。
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'article',
)
3、创建数据表
django框架可以创建数据表,但是不可以创建数据库。所以,在创建数据表之前需要手动创建数据库。
常用命令:
- python manage.py syncdb。将创建的数据表导入到数据库中,如果已经创建好,修改过后,不会更新。需要使用另外的命令。
- python manage.py makemigrations.
- python manage.py migrate
- python manage.py validate 检查有效性,在执行世纪导入数据库之前,检查语句是否有问题。
在需要使用数据库的app包里编辑models.py文件,生成基于models.Model的类,就产生一个数据表。例子如下:
class StudentInfo(models.Model):
name = models.CharField(max_length = ,default="");
studentID = models.CharField(max_length=,default="");
sex = models.CharField(max_length = ,default="");
age = models.IntegerField(default=);
address = models.TextField(default="")
4、数据库表的增删改查
- 增
(1)
c = User(name = name);
c.save();
(2)
User.objects.create(name=name)
- 删
使用对象的delete方法
def Delete(request,id):
objs = User.objects.filter(id=id);
if objs:
User.objects.get(id=id).delete();
return HttpResponse(objs[].name + " delete success")
else:
return HttpResponse("no data match the query");
- 改
使用update方法
def Update(request,id,name):
objs = User.objects.filter(id=id);
if objs:
obj = User.objects.get(id=id)
obj.name = name;
obj.save();
return HttpResponse("%s update success"%id);
else:
return HttpResponse("no data match the query");
- 查
使用get或者filter方法,其中filter()方法可以传一个或多个参数。也可以模糊查询,使用__contains,在列明之后添加__contains相当于SQL中的LIKE语句;还有其他一些魔法语句
比如:__icontains对大小写不敏感, __startswith and __endswith。
filter方法返回一个QuerySet类似于列表,get返回一个对象,如果没有或者有多个则会报错。
使用get方法,如果没有对相匹配,会产生一个 DoesNotExist异常,这个异常是models类的一个属性,因此可以通过捕获这些异常来处理没有匹配数据的情况。
try:
p = Publisher.objects.get(name='Apress')
except Publisher.DoesNotExist:
print "Apress isn't in the database yet."
else:
print "Apress is in the database."
def GetByid(request,id):
objs = User.objects.filter(id=id);
if objs:
obj = User.objects.get(id=id);
return HttpResponse("name is %s"%obj.name);
else:
return HttpResponse("not find id=%s"%id);
def getByName(request,name):
objs = User.objects.filter(name__contains=name);
if objs:
name = [];
for each in objs:
name.append(each.name);
return HttpResponse(','.join(name));
else:
return HttpResponse("no data contain %s"%name);
5 http请求在web应用程序中的响应流程
- web服务器接到一个http请求
- django将web服务器传过来的请求转换成一个请求对象
- django在urlconf里查找对应视图函数
- 调用这个视图函数,参数是请求对象、捕捉到的url参数
- 视图创建一个响应对象并返回
- django将这个响应对象转换成web服务器可以理解的格式
- web服务器将响应发送到客户端
django中数据库的相关操作的更多相关文章
- Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL
一 F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...
- Django中的ORM进阶操作
Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. ...
- PHP对MySQL数据库的相关操作
一.Apache服务器的安装 <1>安装版(计算机相关专业所用软件---百度云链接下载)-直接install<2>非安装版(https://www.apachehaus.com ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- MySQL数据库---记录相关操作
序 表中记录的相关操作一共四种:插入,更新,删除.查询.其中使用最多,也是最难的就是查询. 记录的插入 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3… ...
- Django中数据库操作相关的错误
问题:字段修改属性发生错误 1> >python manage.py makemigrations You are trying to add a non-nullable field ' ...
- django中数据库操作——in操作符
django一对多关系中,为了实现按照一端查询多端,之前都是用extra操作符,经过查看官方文档还有in这个操作符,用这个实现更简单.直接上代码: 根据查询条件模糊查询所有符合条件的机架列表,然后根据 ...
- django中数据库的配置及相关增删改查
ORM ORM是什么?:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 类名对应---- ...
- django中数据库操作有关部分
# >>>>>>>>>>>>>>>>>>>>>>>>&g ...
随机推荐
- 基于Java spring框架的微信企业号开发中关于js-sdk的配置
在调用js-sdk的第一步,我们需要引入js-sdk的js链接,然后执行wx.config,官方示例如下所示: wx.config({ debug: true, // 开启调试模式,调用的所有api的 ...
- WordPress 后台评论如何自定义搜索条件
大家都知道WordPress 作为一个非常成熟的博客系统,功能可以说是非常强大,几乎整个网站都可以进行定制开发,已经不算是一个博客系统了而应该是一个成熟的开发框架 最近就用WP给客户开发了一个网站,但 ...
- Cognos定时刷新RS解决方案
为了了解医院运营情况,在门诊和挂号业务上用户提出了一个接近实时监测的需求,每隔一段时间需要知道当天的挂号量,等待人数,出诊医生等指标来了解医院当天主要科室的就诊情况,以及医疗资源是否分配得当 一:方案 ...
- 2013级C++第14周(春)项目——多态性、虚函数和抽象类
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 第一部分 阅读程序1.阅读.改动和执行关于交通 ...
- Memcached和Memcache 配置教程windows X64
一.Memcached和Memcache的区别: 网上关于Memcached和Memcache的区别的理解众说纷纭,我个人的理解是: Memcached是一个内存缓存系统,而Memcache是php的 ...
- 宏定义偷懒型set,get
之前看到有这么一个写法 #define DEF_SET_GET(varType,varName,funName) \ private : varType varName; \ public : voi ...
- 45个很实用的 Oracle 查询语句小结
这里我们介绍的是 40+ 个很实用的 Oracle 查询语句,主要涵盖了日期操作,获取server信息.获取运行状态.计算数据库大小等等方面的查询. 这些是全部 Oracle 开发人员都必备的技 ...
- 微信小程序 - 获取所在位置(省、市、区)
实现步骤 1. 获取当前经纬度 2. 调用腾讯(百度.高德)地图对应的请求地址,一般都会有独一的key, 譬如 腾讯地图调用地址: https://apis.map.qq.com/ws/geocode ...
- TP5报错variable type error: array
variable type error: array 当你在tp5框架中写方法时返回一个数组时,tp5会报错:variable type error: array 这是因为tp5不支持返回数组. ...
- 远程binlog
binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 ...