1. 程式人生 > >python django day 4 database

python django day 4 database

django-admin.py startproject learn_models # 新建一個專案
cd learn_models # 進入到該專案的資料夾
django-admin.py startapp people # 新建一個 people 應用(app)

learn_models\settings.py
INSTALLED_APPS -> 'people',

people/models.py 
class Person(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()

python manage.py makemigrations
python manage.py migrate


python manage.py shell
from people.models import Person Person.objects.create(name="WeizhongTu", age=24) Person.objects.get(name="WeizhongTu") 新建一個物件的方法有以下幾種: Person.objects.create(name=name,age=age) p = Person(name="WZ", age=23) p.save() p = Person(name="TWZ") p.age = 23 p.save() Person.objects.get_or_create(name
="WZT", age=23) 這種方法是防止重複很好的方法,但是速度要相對慢些,返回一個元組,第一個為Person物件,第二個為True或False, 新建時返回的是True, 已經存在時返回False. 獲取物件有以下方法: Person.objects.all() Person.objects.all()[:10] 切片操作,獲取10個人,不支援負索引,切片可以節約記憶體 Person.objects.get(name=name) get是用來獲取一個物件的,如果需要獲取滿足條件的一些人,就要用到filter Person.objects.filter(name="abc
") # 等於Person.objects.filter(name__exact="abc") 名稱嚴格等於 "abc" 的人 Person.objects.filter(name__iexact="abc") # 名稱為 abc 但是不區分大小寫,可以找到 ABC, Abc, aBC,這些都符合條件 Person.objects.filter(name__contains="abc") # 名稱中包含 "abc"的人 Person.objects.filter(name__icontains="abc") #名稱中包含 "abc",且abc不區分大小寫 Person.objects.filter(name__regex="^abc") # 正則表示式查詢 Person.objects.filter(name__iregex="^abc") # 正則表示式不區分大小寫 filter是找出滿足條件的,當然也有排除符合某條件的 Person.objects.exclude(name__contains="WZ") # 排除包含 WZ 的Person物件 Person.objects.filter(name__contains="abc").exclude(age=23) # 找出名稱含有abc, 但是排除年齡是23歲的 獲取物件有以下方法: Person.objects.all() Person.objects.all()[:10] 切片操作,獲取10個人,不支援負索引,切片可以節約記憶體 Person.objects.get(name=name)