django数据库查询
‘壹’ django处理查询数据
这个是数据库的数据类型的自动映射,你用cursor.fetchall()看看取出的数据显示是否正常。
‘贰’ django中怎么使用两个限定条件在mysql数据库中进行查询
可以使用逻辑关系运算符
例如:
SELECT * FROM table_name
WHERE (条件1 and 条件2) 查询两个条件都符合的结果,
或者
SELECT * FROM table_name
WHERE (条件1 or 条件2) 查询符合两个条件中满足任一条件的结果。
‘叁’ django 如何直接用模型代码(ORM)来当场测试查看查询数据库的效果
在django项目中使用: python manage.py shell
from django.db import connection
#import 相关模型的class
#执行query查询
print connection.queries
‘肆’ django数据库查询操作
1.get(**kwargs)
解释:返回与筛选条件相匹配的Model对象,返回结果有且只有一个。
说明:如果符合条件的对象多于一个抛出MultipleObjectsReturned异常,如果没有找到抛出DoesNotExist异常
语法:ModelName.objects.get(itemName=itemNameValue)
例子:Author.objects.get(id=1)
‘伍’ 如何在django shell中查看执行的数据库sql语句
说个比较简单的方式吧,比如下面的代码:
>>> from django.contrib.auth.admin import User
>>> User.objects.all()
>>> u=User.objects.all()
>>> print u.query
SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user"
在这里直接将查询结果调用其query属性就可以获取其执行的结果了,只是你提供的那种方式是不想手动进行这么繁琐的操作而已
‘陆’ django 查询MySQL数据库
创建mysite目录
django-admin.py startproject mysite这个命令作用是:这将创建在当前目录创建一个mysite目录
前提是从命令行上cd到你想储存你代码的目录,然后生成各种子目录.
首先需要注意的是文件目录
这里面的文件大致作用:
books这个 文件夹存放的是新建数据库的各种信息
books/templates这个目录下装的是网页的布局,当然这个网页的布局就是show.html所提供
books/views.py定义函数,并且把show.html引入进去,文件内容如下:
from django.shortcuts import render,render_to_response
from django.template import loader
from books import models
# Create your views here.
def show(request):
# publisher_list = [{'name':"gongye",'city':'beijing'}]
publisher_list = models.Publisher.objects.all()
return render_to_response('show.html',{'publisher_list':publisher_list})
12345678910111213
books/models.py文件存放的是你所创建的数据库,代码如下:
#coding=utf-8
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Publisher(models.Model):
name = models.CharField(max_length = 30)
address = models.CharField(max_length = 50)
city = models.CharField(max_length = 60)
state_province = models.CharField(max_length = 30)
country = models.CharField(max_length = 50)
website = models.URLField()
# __unicode__这个函数用来返回某个值可以很好的用于查询和admin界面的显示
def __unicode__(self):
return self.name
class Author(models.Model):
first_name = models.CharField(max_length = 30)
last_name = models.CharField(max_length = 40)
email = models.EmailField(blank = True,verbose_name = 'e-mail')
def __unicode__(self):
return u'%s %s'%(self.first_name,self.last_name)
class Book(models.Model):
title = models.CharField(max_length = 100)
author = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField(blank = True,null = True)
def __unicode__(self):
return self.title
books下其他的文件就是在创建的过程中自己产生的.
website/templates文件里存放的是各种显示的静态网页布局,这么多html文件,只要你在访问测试的时候,端口号后面加上html的文件名字就行.比如,我要访问templates/base.html文件,输入网址:localhost:8000/base就可以.
website/settings.py文件是Django的设置文档,里面的INSTALLED_APPS添加多个应用,比如这里面我九添加了books应用,代码如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'books',
‘柒’ django2.0,实现搜索数据库数据并显示在网页的功能
我没环境,不方便帮你写代码,但可以告诉你思路:
你想用ajax方式查数据,第一步,你已经获取到了输入表单的的值,这很好。
第二步,你需要添加一个查询接口路由,和view,用来返回查询到后数据。
第三步,让前端js代码,用ajax的方式,请求你添加的查询路由地址,带上参数。
第四步,在路由对应的view代码中,获取通过url请求传过来的参数。
第五步,在view代码中,对参数进行检查,通过后,调用数据查询方法,获取结果集。
第六步,在view代码中,将结果集转为json(一般是json),返回。
第七步,ajax在收到返回结果后,将数据显示在网页中。
第八步,调整数据显示的样式,使之美观一点。
如有不明可以追问,或私信留言。
‘捌’ django数据表如何多条件查询
Students="你定义的 Models "
Students.objects.filter(name='张三').filter(num='123')
‘玖’ Django如何多表联合统计查询
如果你觉着使用自带ORM查询费劲的话。直接获取数据库连接,然后执行sql语句。
def my_custom_sql(): from django.db import connection, transaction cursor = connection.cursor() # 数据修改操作——提交要求 cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz]) transaction.commit_unless_managed() # 数据检索操作,不需要提交 cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz]) row = cursor.fetchone() return row
多数据
from django.db import connectionscursor = connections['my_db_alias'].cursor()# Your code here...transaction.commit_unless_managed(using='my_db_alias')
通常我们不需要手动调用
transaction.commit_unless_managed(
),我们可以这样做:
@commit_on_successdef my_custom_sql_view(request, value): from django.db import connection, transaction cursor = connection.cursor() # Data modifying operation cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [value]) # Since we modified data, mark the transaction as dirty transaction.set_dirty() # Data retrieval operation. This doesn't dirty the transaction, # so no call to set_dirty() is required. cursor.execute("SELECT foo FROM bar WHERE baz = %s", [value]) row = cursor.fetchone() return render_to_response('template.html', {'row': row})