python——django使用mysql數據庫(二)

  上一篇中,咱們已經講述瞭如何初始化一個django數據庫,這一章就來說講在實際的項目中如何使用咱們初始化的數據庫呢?html

  如還未進行初始化數據庫操做,請參考python——django使用mysql數據庫(一):http://www.cnblogs.com/Eva-J/p/5139990.htmlpython

建立表mysql

  我是先使用mysql的客戶端進行表建立的。固然還能夠不這樣作,等咱們講完下面的內容再回來講。sql

創建映射關係數據庫

  在工程目錄下隨便找一個位置,建立一個models.py文件(django項目啓動的時候會自動去工程目錄下面找這個文件,請不要建立與之同名的文件夾,以避免django混亂),接下來就是在這個文件中創建與settings文件中配置的db中表的映射了。django

   

 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)

各個字段的示意:spa

  除了上述字段示意以外,注意一些細節:設計

    首先,咱們建立的這些類就對應了咱們數據庫中的表,類中的字段就是表的字段。code

    第二,這些類都應繼承django.db中的models.Model模塊。htm

    第三,咱們能夠在類中建立一個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)
相關文章
相關標籤/搜索