簡體   English   中英

在Django中手動提交

[英]Commit manually in django

在Django模型方法中是否有更好的方法來執行以下操作? 以下內容看起來很冗長,因為我可以在SQL shell中用一行完成相同的操作:

class ItemMaster(models.Model):
    ...

    @classmethod
    @transaction.commit_manually
    def update_imdb_rank(self):
        '''
        Update all ranks from the IMDbEntry table
        '''
        cursor = connection.cursor()
        cursor.execute("UPDATE main_itemmaster i JOIN mturk_imdbentry m USING (imdb_url) SET i.imdb_rank=m.imdb_rank")
        transaction.commit()

如果願意,可以使用with語句來減少冗長:

class ItemMaster(models.Model):
    ...

    @classmethod
    def update_imdb_rank(self):
        with transaction.atomic():
            cursor = connection.cursor()
            cursor.execute("UPDATE main_itemmaster i JOIN mturk_imdbentry m USING (imdb_url) SET i.imdb_rank=m.imdb_rank")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM