django mysql搜索_Django 数据库查询

#!/usr/bin/python#coding:utf-8

from django.shortcuts importrender;from django.shortcuts importrender_to_response;from django.http importHttpResponse;from django.template importloader,Context, Template;from django.http importHttpResponseRedirect;from django.views.decorators.csrf importcsrf_exempt;importtime, datetime;from django.db importconnection,transaction;from blog.models importBlog;from blog.models importEntry;from blog.models importAuthor;from blog.models importAuthorBlog;defsaveBlog(request):try:

blog=Blog();

blog.name="python";

blog.tagline="Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。";

blog.save();return HttpResponse("save blog success");exceptBaseException, e:return HttpResponse("save blog failure:"+e);defupdateBlog(request):try:

blog=Blog.objects.get(id=4);

blog.tagline="Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。";

blog.save();return HttpResponse("update blog success");exceptBaseException, e:return HttpResponse("update blog failure:"+e);defdelBlog(request):try:

blog=Blog.objects.get(id=4);#blog.delete();

return HttpResponse("delete blog success");exceptBaseException, e:return HttpResponse("delete blog failure:"+e);###一对多添加###

defsaveEntry(request):try:

blog=Blog.objects.get(id=4); #python

entry=Entry();

entry.headline="django";

entry.body_text="Django是一个开放源代码的Web应用框架,由Python写成。";

entry.pub_date=datetime.date.today();

entry.blog=blog;

entry.save();return HttpResponse("save entry success");exceptBaseException, e:return HttpResponse("save entry failure:"+e);###多对多添加###

defsaveAuthorBlog(request):try:

author=Author.objects.get(id=1);

blog=Blog.objects.get(id=4);

ab=AuthorBlog();

ab.author=author;

ab.blog=blog;

ab.created_at=datetime.date.today();

ab.save();return HttpResponse("save AuthorBlog success");exceptBaseException, e:return HttpResponse("save AuthorBlog failure:"+e);defqueryBlog(request):#检索所有的对象

blogs =Blog.objects.all();for blog inblogs:printblog.name;print "=======";#多对一查询

entrys=Entry.objects.all();for entry inentrys:print entry.headline+","+entry.blog.id+","+entry.blog.name;print "=======";return HttpResponse("queryBlog");###执行原生查询并返回模型实例###

defrawBlog(request):

raw_sql= 'select * from blog_Blog';

blogs=Blog.objects.raw(raw_sql); #xx.objects.raw()执行原始sql

printblogs;for blog inblogs:printblog.name;print "======";

raw_sql= 'select * from blog_Blog o where o.name=%s'; #带参数

blogs=Blog.objects.raw(raw_sql, ["j2ee"]); #xx.objects.raw()执行原始sql

printblogs;for blog inblogs:printblog.name;return HttpResponse("rawBlog");defsqlBlog(request):

cursor=connection.cursor(); #获得一个游标(cursor)对象

#更新操作

cursor.execute('update blog_Blog set name="hadoop168" where id=%s', [1]); #执行sql语句

transaction.commit_unless_managed(); #提交到数据库

#查询操作

cursor.execute('select * from blog_Blog where id=%s', [1]);

blogs= cursor.fetchone(); #或使用 #raw = cursor.fetchall();返回的结果集是个元组

for blog inblogs:printblog;print "======";

cursor.execute('select * from blog_Blog');

blogs= cursor.fetchall(); #返回的结果集是个元组

for blog inlist(blogs):print str(blog[0])+","+blog[1]+","+blog[2];print "======";return HttpResponse("sqlBlog");defquerySqlBlog(request):

sql="select b.name as blog_name, e.headline from blog_Blog b, blog_Entry e where b.id=e.blog_id";

cursor=connection.cursor(); #获得一个游标(cursor)对象

cursor.execute(sql);

blogs= cursor.fetchall(); #返回的结果集是个元组

records=[]for blog inblogs:

dic={}

dic['blog_name']=blog[0]

dic['headline']=blog[1]

records.append(dic);for record inrecords:print record["blog_name"]+","+record["headline"];return HttpResponse("sqlBlog");defsearchBlog(request):#检索所有的对象

#blogs = Blog.objects.all(); #使用all()方法返回数据库中的所有对象

#检索特定的对象,使用以下两种方法:

#fileter() 返回一个与参数匹配的QuerySet,相当于等于(=)

#exclude() 返回一个与参数不匹配的QuerySet,相当于不等于(!=)

#blogs=Blog.objects.filter(name='python'); 等同于:slect * from blog_Blog where name='python'

#不使用Blog.objects.all().filter(name='python'),虽然也能运行,all()最好再获取所有的对象时使用。

blogs=Blog.objects.filter(name='python');for blog inlist(blogs):print str(blog.id)+","+blog.name+","+blog.tagline;print "======";return HttpResponse("searchBlog");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值