iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0

前言

今天我們要來練習怎麼操作資料庫。
在Django 操作資料庫有幾種不同的方法,今天要先介紹如何使用Python Shell來操作。

進入 Shell

在要使用Shell之前,我們先安裝IPython。
IPython是一種基於Python的互動式直譯器。相較於原生的Python Shell,IPython提供了更為強大的編輯和互動功能。我們接下來在Shell內的操作都會用IPython來替代原生的 Python Shell,因此我們要先安裝IPython。

安裝IPython

pip install Ipython

進入Shell

要使用Shell來操作只要在Terminal 使用 python manage.py shell 即可,記得要在manage.py的資料夾內運行。
如果有使用過Jupyter NoteBook 的人可能會對這個介面有點熟悉,因為IPython也是Jupyter NoteBook的核心。

python manage.py shell
Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.5.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: 

進到這個畫面之後,沒使用過這個介面的人,我們可以輸入以下程式碼。

create 創建資料

In [1]: from Django_app.models import Product

In [2]: Toy = Product(Product_name= "ToyCar", price = 20)

這樣我們就創建了一筆資料,並可以對他進行呼叫或邏輯判斷。

In [3]: Toy.Product_name
Out[3]: 'ToyCar'

In [4]: Toy.price
Out[4]: 20

In [5]: Toy.price<20
Out[5]: False

建立完資料後,還沒有結束,要再使用 資料名稱.save(),他才會把我們創建的資料更新到資料庫裏面。

In [6]: Toy.save()

除此以外也可使用class名稱.objects.create來直接在資料庫裏面創建資料。

In [7]: Product.objects.create(Product_name= 'Computer', price = 20000)
Out[7]: <Product: Product object (2)>
In [8]: Product.objects.create(Product_name= 'bike', price = 2000)
Out[8]: <Product: Product object (3)>

bulk create 批次創建

除了每次一筆一筆的創建以外,也可以使用串列(list)來一次新建多筆資料
先將class 裡面進行宣告再存放到list裡面,最後使用 Product.objects.bulk_create(list),就可以囉~
下面是範例:

In [11]:list = [Product(Product_name= 'pen', price = 20),Product(Product_name= 'light', price = 200)]
In [12]: Product.objects.bulk_create(list)
Out[12]: [<Product: Product object (8)>, <Product: Product object (9)>]

參考資料&推薦閱讀

https://docs.djangoproject.com/en/4.1/ref/models/querysets/#bulk-create


上一篇
Day-20 - Models - migrations
下一篇
Day-22 - Models - Shell 的查找
系列文
從0 到 50 初探 如何使用Django 架構出一個網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言