真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Django中運(yùn)用sql語(yǔ)句查詢數(shù)據(jù)庫(kù)的方法

小編給大家分享一下Django中運(yùn)用sql語(yǔ)句查詢數(shù)據(jù)庫(kù)的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)于2013年成立,先為貴港等服務(wù)建站,貴港等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為貴港企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

下面是一個(gè)簡(jiǎn)單的例子。

from django.db import connection def my_custom_sql(self):    with connection.cursor() as cursor:        cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])        cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])        row = cursor.fetchone()    return row

如果你項(xiàng)目中有多個(gè)數(shù)據(jù)庫(kù)的話,django.db.connection也能很方便的選取數(shù)據(jù)庫(kù)。django.db.connections 是一個(gè)類字典的結(jié)構(gòu),允許你使用數(shù)據(jù)庫(kù)別名獲取connection。

from django.db import connections with connections['my_db_alias'].cursor() as cursor:    # Your code here...

使用with作為上下文管理器:

with connection.cursor() as c:    c.execute(...)

和下面這段代碼等效

c = connection.cursor() try:    c.execute(...) finally:    c.close()

注意的問(wèn)題:

      如果你做了更新或者插入操作需要在代碼中使用 :transaction.commit_unless_managed() 來(lái)提交數(shù)據(jù)。或者使用事務(wù)裝飾器(例如 commit_on_success)來(lái)修飾視圖和提供事務(wù)控制數(shù)據(jù)提交。這樣就不用在代碼中調(diào)用transaction.commit_unless_managed()。但是,如果你不手動(dòng)提交修改,你需要使用 transaction.set_dirty() 將事務(wù)標(biāo)識(shí)為已臟。使用 Django ORM 對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改時(shí),Django 會(huì)自動(dòng)調(diào)用 set_dirty() 。但如果你使用了原始 SQL ,Django 就無(wú)法獲得你的 SQL 是否修改了數(shù)據(jù)。只有手動(dòng)調(diào)用 set_dirty() 才能確保 Django 知曉哪些修改必須被提交。

from django.db.transaction import commit_on_success @commit_on_success def 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()    #transaction.commit_unless_managed()    return render_to_response('template.html', {'row': row})

以上是Django中運(yùn)用sql語(yǔ)句查詢數(shù)據(jù)庫(kù)的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站題目:Django中運(yùn)用sql語(yǔ)句查詢數(shù)據(jù)庫(kù)的方法
網(wǎng)站鏈接:http://weahome.cn/article/pscchc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部