今天我們要來練習怎麼操作資料庫。
在Django 操作資料庫有幾種不同的方法,今天要先介紹如何使用Python Shell來操作。
在要使用Shell之前,我們先安裝IPython。
IPython是一種基於Python的互動式直譯器。相較於原生的Python Shell,IPython提供了更為強大的編輯和互動功能。我們接下來在Shell內的操作都會用IPython來替代原生的 Python Shell,因此我們要先安裝IPython。
pip install Ipython
要使用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]:
進到這個畫面之後,沒使用過這個介面的人,我們可以輸入以下程式碼。
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)>
除了每次一筆一筆的創建以外,也可以使用串列(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