zoukankan      html  css  js  c++  java
  • python——django使用mysql数据库(二)

      上一篇中,我们已经讲述了如何初始化一个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)

      

  • 相关阅读:
    React 之 jsx
    React 之 初识
    vue 之 svg
    c#进阶 之 特性
    c#进阶 之 反射Reflection
    面试题解答分析
    c#进阶 之 泛型
    c#进阶 之 修饰符
    c#进阶 之 方法汇总
    微信开发学习(二)
  • 原文地址:https://www.cnblogs.com/Eva-J/p/5152823.html
Copyright © 2011-2022 走看看