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 ...
随机推荐
- 【HTML5】实现QQ聊天气泡效果
今天自己用 HTML/CSS 做了个类似QQ的聊天气泡,以下是效果图: 以下说下关键地方的样式设置.然后贴出html和css代码(不多). 步骤1:布局 消息採用div+float布局,每条消息用一个 ...
- spring boot测试工具(自带)
启动spring boot 项目(一般是openapi) http://localhost:8888/swagger-ui.html 端口号可以自己配
- js 切换隐藏
先试试 显示\隐藏切换 脚本之家欢迎您 切换隐藏 <style type="text/css"> #thediv { width:200px; height:100px ...
- 利用js_API 执行对html文档元素的属性的CRUD操作
转自:http://my.oschina.net/felay/blog/303470 <!DOCTYPE html> <html> <head> <meta ...
- 关于SQL 行转列的办法
公司实施小姑娘要我写一个SQL给她 需求如下: 现在有表A,字段 id code parentid backres,现数据如下 id code parentid backres 1 A 5 2 B 5 ...
- C# WebRequest处理Https请求
http://www.cnblogs.com/youlechang123/archive/2013/03/23/2976630.html 正常情况下,处理https和http没有什么区别,如以下代码, ...
- Appium Python 二:理论概念理解
简介 Appium 是一个开源的自动化测试工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用. “移动原生应用”是指那些用 iOS 或者 Android SDK 写的 ...
- Java从零开始学五(数据类型转换)
一.数据类型转换 分为“自动类型转换”和“强制类型转换” 二.自动类型转换 低级别------>高级别 byte b=7; int i=b; System.out.println("i ...
- Unix时间戳转换
import time def timestamp_datetime(value): format = '%Y-%m-%d %H:%M:%S' # value为传入的值为时间戳(整 ...
- 如何设置mysql登陆密码?
此情况用于mysql密码为空. 命令如下: Mysqladmin –uroot password root1234 Root是用户名,root1234是新设置的密码