1. 程式人生 > >Django在檢視中進行資料庫查詢的笨方法

Django在檢視中進行資料庫查詢的笨方法

在檢視中也有笨方法可以從資料庫中獲取資料。 很簡單: 用現有的任何 Python 類庫執行一條 SQL 查詢並對結果進行一些處理。

from django.shortcuts import render_to_response
import MySQLdb

def 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_response
from mysite.books.models import Book

def book_list(request):
    books = Book.objects.order_by('name')
    return render_to_response('book_list.html', {'books': books})

相關推薦

Django檢視進行資料庫查詢方法

在檢視中也有笨方法可以從資料庫中獲取資料。 很簡單: 用現有的任何 Python 類庫執行一條 SQL 查詢並對結果進行一些處理。 from django.shortcuts import render_to_response import MySQLdb def b

mysqli使用預處理技術進行資料庫查詢方法

php5.6版本以上 這裡實現查詢所有 id>5 的 id,title,contents值: <?php $mysqli = new MySQLi("localhost","root","123456","liuyan"); if(!$mysqli){  

Oracle可以代替like進行模糊查詢方法instr(更高效)

一、簡介 相信大家都使用過like進行模糊匹配查詢,在oracle中,instr()方法可以用來代替like進行模糊查詢,大資料量的時候效率更高。本文將對instr()的基本使用方法進行詳解以及通過示例講解與like的效率對比。 二、使用說明 instr(sourceString,des

如何在java List進行模糊查詢

ring 模糊匹配 set return 模糊查詢 匹配 emp res show 比如我有下面這樣一個List,裏面存放的是多個Employee對象。然後我想對這個List進行按照Employee對象的名字進行模糊查詢。有什麽好的解決方案麽?比如我輸入的查詢條件為“wan

Linux下安裝PHP並在nginx服務器進行配置的詳細方法

devel direct emca red pca pic 占用 amp entos 先介紹一下使用的環境:centos 7.4,  PHP 7.0 ,  nginx 1.12 Linux系統版本可以通過命令:lsb_release -a 查看. 現在開始步入正題了! 1.

django檢視執行的sql查詢語句

對於一些比較複雜的查詢在做優化時,通常需要檢視下django底層執行的sql語句。 例如: data = Tasks.objects.select_related().filter(~Q(pk=4) & (~Q(reviewer__contains='pengpai(彭湃)') | ~Q

Codeigniter 如何在自己的類進行資料庫操作

自己寫了一個類,放在 libraries 下,但是類裡面不能使用 new mysqli()。因此,使用下面的方法來操作資料庫: 在 application/config/autoload.php 中增加: $autoload['libraries'] = array('datab

一種替代DOORS在WORD進行需求管理的方法(基於WORD外掛的應用)

外掛應用背景 通常軟體開發流程(CMMI,ASPICE,ISO26262)中,要求對需求進行管理。每條需求都應該有唯一的ID,一般市面上有很多軟體可以實現該功能如:DOORS,但費用不低(十幾萬哦)。對於嵌入式系統的需求開發來說,許多環節是在不同工具進行開發的,如系統設計可

加快資料庫查詢速度方法--建立索引

建立索引的目的是加快查詢速度。 索引是與表或檢視關聯的磁碟上結構,可以加快從表或檢視中檢索行的速度。索引包含由表或檢視中的一列或多列生成的鍵。這些鍵儲存在一個結構(如B 樹)中,使資料庫管理系統可以快速有效地查詢與鍵值關聯的行。 表或檢視可以包含以下型別的索引:     聚

MongoRepository的一些查詢集合方法排序失效問題

最近工作中用到mongoDb,使用了MongoRepository,類似於jpa,但是需求中需要用一個userId集合查詢一個對應的使用者物件集合,使用了 userRepository.findByUserIdIn(List<UserIds>),此時結果是查出來了,但是之前進行排的

myBatis 操作 mysql時,使用 like 關鍵進行模糊查詢方法

我嘗試了以下三種方式:  一、 like '%#{mkName}%' 這種方式,myBatis直接報錯,說引數的數量不匹配。 二、 like '%'||#{mkName}||'%' 這種方式不報錯,但是查詢出來的結果是不是對的。比如,對於 mkName這個欄位,資料庫中只有 “小學”  這個值,但是當

LBS資料庫查詢某經緯度2KM範圍內的資料

之前很啥很天真地以為無非就是逐個計算距離,然後比較出來就行了,然後當碰到訪問使用者很多,而且資料庫中經緯度資訊很多的時候,計算量的迅速增長,能讓伺服器完全傻逼掉,還是老前輩的經驗比我們豐富,給了我很大的啟示。 MySQL效能調優 – 使用更為快速的演算法進行距離計算

Python進行JSON轉換的方法

JSON是什麼?它是一種輕量級的資料交換格式,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和清晰的層次結構,使得 JSON 成為理想的資料交換語言,而且它非常方便我們進行閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。 JSON 名稱/值對 JSON 資料的書寫格式

如果將Java資料庫查詢到的結果集轉換為Json陣列形式

package util; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.Date; import net.sf.json.JSONArray; import n

遍歷子檢視某個型別控制元件方法

NSMutableArray *textFieldArray = [NSMutableArray arrayWithCapacity:5]; for (UIView *textField in self.view.subviews) { i

Django檢視,與資料庫互動並返回資料

環境:python 2.7.13  資料庫:sqlite3(Django自帶)   在學習Django的時候,遇到了困難。大概就是取到資料庫資料後一直不能轉成json資料。最後終於自己琢磨解決了。 要點就是在通過Django API與sqlite資料庫做互動時,要看清楚返回

Spring Boot專案資料庫查詢

概述 Spring Boot專案就是尊崇“習慣優於配置“的思想,把過去spring框架專案的各種配置檔案都給了預設配置。這個專案出來好幾年了,相信大部分團隊都用上了。講真,該專案對於擁抱spring專案大腿的java開發者來說真的是太方便了。 我們在spr

for迴圈裡面進行資料庫查詢的處理

public class { public static void main(String[] args) { List<ProductPop> list = productDa

for迴圈裡面進行資料庫查詢弊端

for迴圈裡面沒有dao的查詢,方法一: List<ProductPop> list = productDao.getProudctList(map); if (list.size() > 0) {Map<String, Object> map

spring+mybatis整合後進行資料庫操作的方法

這裡為大家說下兩種方式,第一種是MapperConfigurer的配置,閒話不說,先看圖 這個是我在spring配置檔案裡面寫的,這裡的ref直接用到了上一步的sqlsessionFactory. 這裡資料庫和實體類我已經寫好了,主要目的是為了說明sqlsession的使用