最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Python的Django框架中更新數(shù)據(jù)庫(kù)數(shù)據(jù)的方法

 更新時(shí)間:2015年07月17日 10:34:35   投稿:goldensun  
這篇文章主要介紹了在Python的Django框架中更新數(shù)據(jù)庫(kù)數(shù)據(jù),對(duì)此Django框架中提供了便利的插入和更新方法,需要的朋友可以參考下

先使用一些關(guān)鍵參數(shù)創(chuàng)建對(duì)象實(shí)例,如下:

>>> p = Publisher(name='Apress',
...     address='2855 Telegraph Ave.',
...     city='Berkeley',
...     state_province='CA',
...     country='U.S.A.',
...     website='http://www.apress.com/')

這個(gè)對(duì)象實(shí)例并 沒有 對(duì)數(shù)據(jù)庫(kù)做修改。 在調(diào)用`` save()`` 方法之前,記錄并沒有保存至數(shù)據(jù)庫(kù),像這樣:

>>> p.save()

在SQL里,這大致可以轉(zhuǎn)換成這樣:

INSERT INTO books_publisher
  (name, address, city, state_province, country, website)
VALUES
  ('Apress', '2855 Telegraph Ave.', 'Berkeley', 'CA',
   'U.S.A.', 'http://www.apress.com/');

因?yàn)?Publisher 模型有一個(gè)自動(dòng)增加的主鍵 id ,所以第一次調(diào)用 save() 還多做了一件事: 計(jì)算這個(gè)主鍵的值并把它賦值給這個(gè)對(duì)象實(shí)例:

>>> p.id
52  # this will differ based on your own data

接下來再調(diào)用 save() 將不會(huì)創(chuàng)建新的記錄,而只是修改記錄內(nèi)容(也就是 執(zhí)行 UPDATE SQL語句,而不是 INSERT 語句):

>>> p.name = 'Apress Publishing'
>>> p.save()

前面執(zhí)行的 save() 相當(dāng)于下面的SQL語句:

UPDATE books_publisher SET
  name = 'Apress Publishing',
  address = '2855 Telegraph Ave.',
  city = 'Berkeley',
  state_province = 'CA',
  country = 'U.S.A.',
  website = 'http://www.apress.com'
WHERE id = 52;

注意,并不是只更新修改過的那個(gè)字段,所有的字段都會(huì)被更新。 這個(gè)操作有可能引起競(jìng)態(tài)條件,這取決于你的應(yīng)用程序。 請(qǐng)參閱后面的“更新多個(gè)對(duì)象”小節(jié)以了解如何實(shí)現(xiàn)這種輕量的修改(只修改對(duì)象的部分字段)。

UPDATE books_publisher SET
  name = 'Apress Publishing'
WHERE id=52;

選擇對(duì)象

當(dāng)然,創(chuàng)建新的數(shù)據(jù)庫(kù),并更新之中的數(shù)據(jù)是必要的,但是,對(duì)于 Web 應(yīng)用程序來說,更多的時(shí)候是在檢索查詢數(shù)據(jù)庫(kù)。 我們已經(jīng)知道如何從一個(gè)給定的模型中取出所有記錄:

>>> Publisher.objects.all()
[<Publisher: Apress>, <Publisher: O'Reilly>]

這相當(dāng)于這個(gè)SQL語句:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher;

注意

注意到Django在選擇所有數(shù)據(jù)時(shí)并沒有使用 SELECT* ,而是顯式列出了所有字段。 設(shè)計(jì)的時(shí)候就是這樣: SELECT* 會(huì)更慢,而且最重要的是列出所有字段遵循了Python 界的一個(gè)信條: 明言勝于暗示。

有關(guān)Python之禪(戒律) :-),在Python提示行輸入 import this 試試看。

讓我們來仔細(xì)看看 Publisher.objects.all() 這行的每個(gè)部分:

  •     首先,我們有一個(gè)已定義的模型 Publisher 。沒什么好奇怪的: 你想要查找數(shù)據(jù), 你就用模型來獲得數(shù)據(jù)。
  •     然后,是objects屬性。 它被稱為管理器,我們將在第10章中詳細(xì)討論它。 目前,我們只需了解管理器管理著所有針對(duì)數(shù)據(jù)包含、還有最重要的數(shù)據(jù)查詢的表格級(jí)操作。
  •     所有的模型都自動(dòng)擁有一個(gè) objects 管理器;你可以在想要查找數(shù)據(jù)時(shí)使用它。
  •     最后,還有 all() 方法。這個(gè)方法返回返回?cái)?shù)據(jù)庫(kù)中所有的記錄。 盡管這個(gè)對(duì)象 看起來 象一個(gè)列表(list),它實(shí)際是一個(gè) QuerySet 對(duì)象, 這個(gè)對(duì)象是數(shù)據(jù)庫(kù)中一些記錄的集合。

相關(guān)文章

最新評(píng)論

吐鲁番市| 大名县| 丰镇市| 苗栗市| 新沂市| 楚雄市| 古丈县| 丘北县| 南昌县| 普格县| 沙河市| 海阳市| 新化县| 鹤山市| 尚志市| 瑞昌市| 土默特右旗| 舟曲县| 南昌县| 商都县| 卫辉市| 平定县| 大同市| 治县。| 闽侯县| 金阳县| 宝坻区| 义乌市| 日喀则市| 怀化市| 尼木县| 科技| 万全县| 邻水| 正定县| 新安县| 西华县| 施秉县| 平昌县| 渝中区| 交城县|