python的django框架

python manage.py runserver
運行django服務器python

python manage.py migrate
建立django_session表
錯誤一:
raise AlreadyRegistered
('The model %s is already registered' % model.__name__)
django.contrib.admin.sites.AlreadyRegistered:
The model Event is already registeredshell

這裏是由於看教程,多寫了admin.site.register()和admin.site.Guest()方法數據庫

錯誤二:
由於教程裏面的的排版有問題,使得create_time方法沒有被寫入Guest類,
當咱們模型建好了,執行數據庫遷移時沒有把create_time字段遷移進去
遷移的命令以下
python manage.py makemigrations sign

python manage.py migrate


基本數據訪問
當須要操做數據庫時,再也不須要經過SQL語句,Django自動爲這些模型提供
了高級的Python API.接下來練習數據庫表的操做,運行manage.py提供的
shell命令

python manage.py shell

該shell模式爲Django特別定製,在該模式下能夠操做Django模型

from sign.models import Event,Guest

Event.object.all()

Guest.objects.all

from datetime import datetime
須要設置時間導入的的方法


插入數據
e1 = Event(id = 2,name = '紅米Pro發佈會',
limit=2000,status=True,address='北京水立方',
start_time=datetime(2016,8,10,14,0,0))

e1.save()

建立與保持共同執行
Event.objects.create(id=3,name='紅米MAX發佈會',
limit=2000,status =True,address='北京會展中心',
start_time=datetime(2016,9,22,14,0,0))

Guest.objects.create(realname='andy',
phone=12321312321,email='andy@mail.com',
sign=False,event_id=3)

查詢數據
e1 = Event.objects.get(name = '紅米MAX發佈會')

e1

e1.address


Event.objects.get(name = '紅米MAX發佈會').limit

由於name='發佈會'並無徹底匹配到發佈會名稱,因此會
拋出DoesNotExist異常.不少時候咱們使用模糊查詢

table.objects.filter()方法是從數據庫取得匹配的結果,
返回一個對象列表,若是記錄中不存在的話,它會返回空
列表[].

e2 = Event.objects.filter(name__contains='發佈會')

name爲發佈會的字段名,在name和contains之間用雙下劃線
鏈接.這裏contains部分會被Django翻譯成SQL語句中的LIKE
語句.
關聯查詢
>>> g1 = Guest.objects.get(sign='True')
>>> g1.event
<Event: 小米5發佈會>
>>> g1.event.name
'小米5發佈會'
>>> g1.event.address
'深圳邁科龍大廈'
>>>
刪除
Guest.object.get(phone='13052939116').delete()

更新
第一種方法
>>> g3 = Guest.objects.get(sign='False')
>>> g3.realname='zsj'
>>> g3.save()
<bound method Model.save of <Guest: Guest object (3)>>
第二種方法
Guest.objects.select_for_update().
filter(sign='False').update(realname='robot')
django

相關文章
相關標籤/搜索