在Django的视图中使用数据库查询的方法

在Django的视图中使用数据库查询的方法,第1张

概述在视图中也有笨方法可以从数据库中获取数据。很简单:用现有的任何Python类库执行一条SQL查询并对结果进行一些处理。

在视图中也有笨方法可以从数据库中获取数据。 很简单: 用现有的任何 Python 类库执行一条 sql 查询并对结果进行一些处理。

在本例的视图中,我们使用了 MysqLdb 类库(可以从 http://www.djangoproject.com/r/python-MysqL/ 获得)来连接 MysqL 数据库,取回一些记录,将它们提供给模板以显示一个网页:

from django.shortcuts import render_to_responseimport MysqLdbdef book_List(request):  db = MysqLdb.connect(user='me',db='mydb',passwd='secret',host='localhost')  cursor = db.cursor()  cursor.execute('SELECT name FROM books ORDER BY name')  names = [row[0] for row in cursor.fetchall()]  db.close()  return render_to_response('book_List.HTML',{'names': names})

这个方法可用,但很快一些问题将出现在你面前:

    我们将数据库连接参数硬行编码于代码之中。 理想情况下,这些参数应当保存在 Django 配置中。

    我们不得不重复同样的代码: 创建数据库连接、创建数据库游标、执行某个语句、然后关闭数据库。 理想情况下,我们所需要应该只是指定所需的结果。

    它把我们栓死在 MysqL 之上。 如果过段时间,我们要从 MysqL 换到 Postgresql,就不得不使用不同的数据库适配器(例如 psycopg 而不是 MysqLdb ),改变连接参数,根据 sql 语句的类型可能还要修改sql 。 理想情况下,应对所使用的数据库服务器进行抽象,这样一来只在一处修改即可变换数据库服务器。 (如果你正在建立一个开源的Django应用程序来尽可能让更多人使用的话,这个特性是非常适当的。)

正如你所期待的,Django数据库层正是致力于解决这些问题。 以下提前揭示了如何使用 Django 数据库 API 重写之前那个视图。

from django.shortcuts import render_to_responsefrom mysite.books.models import Bookdef book_List(request):  books = Book.objects.order_by('name')  return render_to_response('book_List.HTML',{'books': books})

我们将在本章稍后的地方解释这段代码。 目前而言,仅需对它有个大致的认识。

总结

以上是内存溢出为你收集整理的在Django的视图中使用数据库查询的方法全部内容,希望文章能够帮你解决在Django的视图中使用数据库查询的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1205629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存