上一篇中,我們已經講述了如何初始化一個django數據庫,這一章就來講講在實際的項目中如何使用我們初始化的數據庫呢?
如還未進行初始化數據庫操作,請參考python——django使用mysql數據庫(一):http://www.cnblogs.com/Eva-J/p/5139990.html
創建表
我是先使用mysql的客戶端進行表創建的。當然還可以不這樣做,等我們講完下面的內容再回來說。
建立映射關系
在工程目錄下隨便找一個位置,創建一個models.py文件(django項目啟動的時候會自動去工程目錄下面找這個文件,請不要創建與之同名的文件夾,以免django混亂),接下來就是在這個文件中建立與settings文件中配置的db中表的映射了。
1 #!/usr/bin/env python 2 #-*-coding:utf-8-*- 3 __author__ = 'Eva_J' 4 from django.db import models 5 class User(models.Model): 6 class Meta: 7 db_table = 'user' 8 id = models.AutoField(max_length=11,db_column='UID',primary_key=True) 9 userName = models.CharField(max_length=255,db_column='username',blank = False) 10 passWord = models.CharField(max_length=255,db_column='password',blank = False) 11 cid = models.IntegerField(max_length=11,db_column='CID',blank = False) 12 13 class Charactor(models.Model): 14 class Meta: 15 db_table = 'charactor' 16 cid = models.AutoField(max_length=11,db_column='CID',primary_key=True) 17 charactor = models.CharField(max_length=255,db_column='charactor',blank = False) 18 hGroup = models.IntegerField(max_length=11,db_column='h_group',blank = False) 19 20 class Host(models.Model): 21 class Meta: 22 db_table = 'host' 23 hid = models.AutoField(max_length=11,db_column='HID',primary_key=True) 24 hGroup = models.CharField(max_length=255,db_column='h_group',blank = False) 25 hUser = models.CharField(max_length=255,db_column='h_user',blank = False) 26 hPwd = models.CharField(max_length=255,db_column='h_pwd',blank = False) 27 hostName = models.CharField(max_length=255,db_column='hostname',blank = False) 28 29 class Monitor(models.Model): 30 class Meta: 31 db_table = 'MonitorInfo' 32 mid = models.AutoField(max_length=11,db_column='MID',primary_key=True) 33 netStates = models.CharField(max_length=255,db_column='NetStates',blank = False) 34 ip = models.CharField(max_length=255,db_column='ip',blank = False) 35 mem = models.CharField(max_length=255,db_column='memo',blank = False) 36 cpu = models.CharField(max_length=255,db_column='cpu',blank = False) 37 time = models.CharField(max_length=255,db_column='time',blank = False)
各個字段的示意:
除了上述字段示意之外,注意一些細節:
首先,我們創建的這些類就對應了我們數據庫中的表,類中的字段就是表的字段。
第二,這些類都應繼承django.db中的models.Model模塊。
第三,我們可以在類中創建一個Meta類指定表名,也可以不創建這個類,這樣將會默認類名就是表名。
第四,我們建立這些映射關系必須和表中的一樣,例如是否為空,長度等,如果和表中的設計不符,就會報錯。
現在再回去說,我們如果不使用mysql的客戶端或sql語句創建表,而是在django初始化數據表之前,就寫好這個文件,在初始化db的時候,這些表就會自動創建。不過在實際的開發中,更多的時候,我們會一邊寫一邊創建新表,所以就把兩種方法都寫出來好了。
表的使用
1 #增 2 _obj = {'netStates':HostInfo['NetStates'],'ip':HostInfo['ip'],'mem':HostInfo['memoInfo'],'cpu':HostInfo['cpuInfo'],'time':HostInfo['timeInfo']} 3 obj = models.Monitor.objects.create(**_obj) 4 5 #刪 6 models.Charactor.objects.fileter(cid = cID).delete() 7 8 #改 9 obj = object() 10 abj = models.Charactor.objects.get(cid = cID) 11 obj.cid = '1' 12 obj.save() 13 14 #查 15 objLst0 = models.Charactor.objects.filter(cid = cID)