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

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

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

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

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ù)庫的話,django.db.connection也能很方便的選取數(shù)據(jù)庫。django.db.connections 是一個(gè)類字典的結(jié)構(gòu),允許你使用數(shù)據(jù)庫別名獲取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()

注意的問題:

      如果你做了更新或者插入操作需要在代碼中使用 :transaction.commit_unless_managed() 來提交數(shù)據(jù)?;蛘呤褂檬聞?wù)裝飾器(例如 commit_on_success)來修飾視圖和提供事務(wù)控制數(shù)據(jù)提交。這樣就不用在代碼中調(diào)用transaction.commit_unless_managed()。但是,如果你不手動(dòng)提交修改,你需要使用 transaction.set_dirty() 將事務(wù)標(biāo)識(shí)為已臟。使用 Django ORM 對(duì)數(shù)據(jù)庫進(jìn)行修改時(shí),Django 會(huì)自動(dòng)調(diào)用 set_dirty() 。但如果你使用了原始 SQL ,Django 就無法獲得你的 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語句查詢數(shù)據(jù)庫的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁標(biāo)題:Django中運(yùn)用sql語句查詢數(shù)據(jù)庫的方法
新聞來源:http://bm7419.com/article42/pscchc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站改版靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司