一、使用环境

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中数据库的相关操作的更多相关文章

  1. Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL

    一    F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...

  2. Django中的ORM进阶操作

    Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. ...

  3. PHP对MySQL数据库的相关操作

    一.Apache服务器的安装 <1>安装版(计算机相关专业所用软件---百度云链接下载)-直接install<2>非安装版(https://www.apachehaus.com ...

  4. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  5. MySQL数据库---记录相关操作

    序 表中记录的相关操作一共四种:插入,更新,删除.查询.其中使用最多,也是最难的就是查询. 记录的插入 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3… ...

  6. Django中数据库操作相关的错误

    问题:字段修改属性发生错误 1> >python manage.py makemigrations You are trying to add a non-nullable field ' ...

  7. django中数据库操作——in操作符

    django一对多关系中,为了实现按照一端查询多端,之前都是用extra操作符,经过查看官方文档还有in这个操作符,用这个实现更简单.直接上代码: 根据查询条件模糊查询所有符合条件的机架列表,然后根据 ...

  8. django中数据库的配置及相关增删改查

    ORM ORM是什么?:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 类名对应---- ...

  9. django中数据库操作有关部分

    # >>>>>>>>>>>>>>>>>>>>>>>>&g ...

随机推荐

  1. TreeListControl 不同类别的行使用不同的数据模板

  2. Java Object Clone

    Java Object Clone User user = new User(); user.setName("tom"); User user1 = new User(); us ...

  3. DataGrid前台数据绑定技巧

    (1)DataGrid控件不换行,数据显示不完全后面加"..." <%# DataBinder.Eval(Container.DataItem,? DataBinder.Ev ...

  4. HDU4666+POJ2926【最远曼哈顿距离】

    一开始就明白那个N*1<k的算法了, 可无奈删除操作耗时还是太多,最后学习了STL set,map相应的用法,方便好多. STL真的是一个好工具 #include<iostream> ...

  5. php之快速入门学习-13(PHP 循环 - While 循环)

    PHP 循环 - While 循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块. PHP 循环 在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行.我们可以在代码中使用循 ...

  6. Struts2(八)访问Servlet API

    一.Struts2中的Servlet API 1.1.struts2的Action实现了MVC中C层的作用 针对请求用户显示不同的信息 登录后段保存用户信息 ----session 保存当前在线人数等 ...

  7. EventBus源码分析

      一.         EventBus简介 1.1.EventBus EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化Android 事件传递,这里的事件可 ...

  8. windows命令:control命令

    Windows的命令列模式下有个非常好用的命令叫做Control.这个命令其实就是控制『控制台』的一个接口.你可以用这个命令直接叫起一些平常要找很久才会找到的窗口.最简单的一个例子,你只要在『开始』 ...

  9. sybase数据库学习笔记(一)

    sybase的基本框架 sybase数据库由系统数据库.用户数据库.数据库设备和辅助文件组成. 1. 系统数据库 sybase数据库是多个数据库结构的数据库管理系统.分为系统数据库和用户数据库. 系统 ...

  10. python之函数用法basestring

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法basestring #http://www.cnblogs.com/oneday/a ...