欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Django的模型中執(zhí)行原始SQL查詢的方法

 更新時(shí)間:2015年07月21日 11:33:41   投稿:goldensun  
這篇文章主要介紹了在Django的模型中執(zhí)行原始SQL查詢的方法,Django是最具人氣的Python web開(kāi)發(fā)框架,需要的朋友可以參考下

有時(shí)候你會(huì)發(fā)現(xiàn)Django數(shù)據(jù)庫(kù)API帶給你的也只有這么多,那你可以為你的數(shù)據(jù)庫(kù)寫(xiě)一些自定義SQL查詢。 你可以通過(guò)導(dǎo)入django.db.connection對(duì)像來(lái)輕松實(shí)現(xiàn),它代表當(dāng)前數(shù)據(jù)庫(kù)連接。 要使用它,需要通過(guò)connection.cursor()得到一個(gè)游標(biāo)對(duì)像。 然后,使用cursor.execute(sql, [params])來(lái)執(zhí)行SQL語(yǔ)句,使用cursor.fetchone()或者cursor.fetchall()來(lái)返回記錄集。 例如:

>>> from django.db import connection
>>> cursor = connection.cursor()
>>> cursor.execute("""
...  SELECT DISTINCT first_name
...  FROM people_person
...  WHERE last_name = %s""", ['Lennon'])
>>> row = cursor.fetchone()
>>> print row
['John']

connection和cursor幾乎實(shí)現(xiàn)了標(biāo)準(zhǔn)Python DB-API,你可以訪問(wèn)` http://www.python.org/peps/pep-0249.html <http://www.python.org/peps/pep-0249.html>`__來(lái)獲取更多信息。 如果你對(duì)Python DB-API不熟悉,請(qǐng)注意在cursor.execute() 的SQL語(yǔ)句中使用`` “%s”`` ,而不要在SQL內(nèi)直接添加參數(shù)。 如果你使用這項(xiàng)技術(shù),數(shù)據(jù)庫(kù)基礎(chǔ)庫(kù)將會(huì)自動(dòng)添加引號(hào),同時(shí)在必要的情況下轉(zhuǎn)意你的參數(shù)。

不要把你的視圖代碼和django.db.connection語(yǔ)句混雜在一起,把它們放在自定義模型或者自定義manager方法中是個(gè)不錯(cuò)的主意。 比如,上面的例子可以被整合成一個(gè)自定義manager方法,就像這樣:

from django.db import connection, models

class PersonManager(models.Manager):
  def first_names(self, last_name):
    cursor = connection.cursor()
    cursor.execute("""
      SELECT DISTINCT first_name
      FROM people_person
      WHERE last_name = %s""", [last_name])
    return [row[0] for row in cursor.fetchone()]

class Person(models.Model):
  first_name = models.CharField(max_length=50)
  last_name = models.CharField(max_length=50)
  objects = PersonManager()

然后這樣使用:

>>> Person.objects.first_names('Lennon')
['John', 'Cynthia']

相關(guān)文章

  • pytorch實(shí)現(xiàn)從本地加載 .pth 格式模型

    pytorch實(shí)現(xiàn)從本地加載 .pth 格式模型

    今天小編就為大家分享一篇pytorch實(shí)現(xiàn)從本地加載 .pth 格式模型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Centos部署django服務(wù)nginx+uwsgi的方法

    Centos部署django服務(wù)nginx+uwsgi的方法

    這篇文章主要介紹了Centos部署django服務(wù)nginx+uwsgi的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Linux下Pycharm、Anaconda環(huán)境配置及使用踩坑

    Linux下Pycharm、Anaconda環(huán)境配置及使用踩坑

    這篇文章主要介紹了Linux下Pycharm、Anaconda環(huán)境配置及使用踩坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python3爬蟲(chóng)中異步協(xié)程的用法

    python3爬蟲(chóng)中異步協(xié)程的用法

    在本篇文章里小編給大家整理的是關(guān)于python3爬蟲(chóng)中異步協(xié)程的用法,需要的朋友們可以學(xué)習(xí)參考下。
    2020-07-07
  • 解決Pycharm 導(dǎo)入其他文件夾源碼的2種方法

    解決Pycharm 導(dǎo)入其他文件夾源碼的2種方法

    今天小編就為大家分享一篇解決Pycharm 導(dǎo)入其他文件夾源碼的2種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 在Django的模板中使用認(rèn)證數(shù)據(jù)的方法

    在Django的模板中使用認(rèn)證數(shù)據(jù)的方法

    這篇文章主要介紹了在Django的模板中使用認(rèn)證數(shù)據(jù)的方法,Django是最具人氣的Python web開(kāi)發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • python flask框架詳解

    python flask框架詳解

    這篇文章主要介紹了python flask框架詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Python中如何自定義函數(shù)

    Python中如何自定義函數(shù)

    這篇文章主要介紹了Python中如何自定義函數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Django自定義認(rèn)證方式用法示例

    Django自定義認(rèn)證方式用法示例

    這篇文章主要介紹了Django自定義認(rèn)證方式用法,結(jié)合實(shí)例形式分析了Django自定義認(rèn)證的創(chuàng)建、設(shè)置及功能實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • 聊聊Python對(duì)CSV文件的讀取與寫(xiě)入問(wèn)題

    聊聊Python對(duì)CSV文件的讀取與寫(xiě)入問(wèn)題

    今天抽空給大家介紹下Python對(duì)CSV文件的讀取與寫(xiě)入問(wèn)題,首先需要在python環(huán)境里導(dǎo)入csv板塊,下面就通過(guò)實(shí)例代碼給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧
    2021-11-11

最新評(píng)論