博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django中数据库的相关操作
阅读量:6234 次
发布时间:2019-06-22

本文共 3121 字,大约阅读时间需要 10 分钟。

一、使用环境

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的类,就产生一个数据表。例子如下:

1 class StudentInfo(models.Model):2     3     name = models.CharField(max_length = 50,default="");4     studentID = models.CharField(max_length=12,default="");5     sex = models.CharField(max_length = 5,default="");6     age = models.IntegerField(default=0);7     address = models.TextField(default="")
View Code

4、数据库表的增删改查

(1)

c = User(name = name);

c.save();

(2)

User.objects.create(name=name)

使用对象的delete方法

1 def Delete(request,id):2     objs = User.objects.filter(id=id);3     if objs:4         User.objects.get(id=id).delete();5         return HttpResponse(objs[0].name + " delete success")6     else:7         return HttpResponse("no data match the query");
View Code

使用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");
View Code

使用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);
View Code

 

1 def getByName(request,name):2     objs = User.objects.filter(name__contains=name);3     if objs:4         name = [];5         for each in objs:6             name.append(each.name);7         return HttpResponse(','.join(name));8     else:9         return HttpResponse("no data contain %s"%name);
View Code

 

5 http请求在web应用程序中的响应流程

  • web服务器接到一个http请求
  • django将web服务器传过来的请求转换成一个请求对象
  • django在urlconf里查找对应视图函数
  • 调用这个视图函数,参数是请求对象、捕捉到的url参数
  • 视图创建一个响应对象并返回
  • django将这个响应对象转换成web服务器可以理解的格式
  • web服务器将响应发送到客户端

转载地址:http://ehqna.baihongyu.com/

你可能感兴趣的文章
C# 生成等比缩略图的类
查看>>
安利 : プログラミングで彼女をつくる 全攻略~
查看>>
1022. Digital Library (30)
查看>>
Canvas入门(2):图形渐变和图像形变换
查看>>
DataAccess通用数据库访问类,简单易用,功能强悍
查看>>
启动MYSQL密码审计插件
查看>>
spring的事务操作
查看>>
Extensions for Spatial Data
查看>>
Hadoop HDFS 用户指南
查看>>
primefaces 查询 点击按钮 加载 动画 ajax loader
查看>>
Java单例模式——并非看起来那么简单
查看>>
curl库pycurl实例及参数详解
查看>>
actor中!(tell)与forward的差别
查看>>
Android - Activity定制横屏(landscape)显示
查看>>
SQL中 EXCEPT、INTERSECT用法
查看>>
基于Token的WEB后台认证机制
查看>>
[Python] Reuse Code in Multiple Projects with Python Modules
查看>>
026——VUE中事件修饰符之使用$event与$prevent修饰符操作表单
查看>>
dynamic web module讲解
查看>>
C# 过滤特殊字符,保留中文,字母,数字,和-
查看>>