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中表的映射了。

    #!/usr/bin/env python
    #-*-coding:utf-8-*-
    from django.db import models
    class User(models.Model):
        class Meta:
            db_table = 'user'
        id = models.AutoField(max_length=11,db_column='UID',primary_key=True)
        userName = models.CharField(max_length=255,db_column='username',blank = False)
        passWord = models.CharField(max_length=255,db_column='password',blank = False)
        cid = models.IntegerField(max_length=11,db_column='CID',blank = False)
    
    class Charactor(models.Model):
        class Meta:
            db_table = 'charactor'
        cid = models.AutoField(max_length=11,db_column='CID',primary_key=True)
        charactor = models.CharField(max_length=255,db_column='charactor',blank = False)
        hGroup = models.IntegerField(max_length=11,db_column='h_group',blank = False)
    
    class Host(models.Model):
        class Meta:
            db_table = 'host'
        hid = models.AutoField(max_length=11,db_column='HID',primary_key=True)
        hGroup = models.CharField(max_length=255,db_column='h_group',blank = False)
        hUser = models.CharField(max_length=255,db_column='h_user',blank = False)
        hPwd = models.CharField(max_length=255,db_column='h_pwd',blank = False)
        hostName = models.CharField(max_length=255,db_column='hostname',blank = False)
    
    class Monitor(models.Model):
        class Meta:
            db_table = 'MonitorInfo'
        mid = models.AutoField(max_length=11,db_column='MID',primary_key=True)
        netStates = models.CharField(max_length=255,db_column='NetStates',blank = False)
        ip = models.CharField(max_length=255,db_column='ip',blank = False)
        mem = models.CharField(max_length=255,db_column='memo',blank = False)
        cpu = models.CharField(max_length=255,db_column='cpu',blank = False)
        time = models.CharField(max_length=255,db_column='time',blank = False)

    各个字段的示意:

    除了上述字段示意之外,注意一些细节:

        首先,我们创建的这些类就对应了我们数据库中的表,类中的字段就是表的字段。

        第二,这些类都应继承django.db中的models.Model模块。

        第三,我们可以在类中创建一个Meta类指定表名,也可以不创建这个类,这样将会默认类名就是表名。

        第四,我们建立这些映射关系必须和表中的一样,例如是否为空,长度等,如果和表中的设计不符,就会报错。

      现在再回去说,我们如果不使用mysql的客户端或sql语句创建表,而是在django初始化数据表之前,就写好这个文件,在初始化db的时候,这些表就会自动创建。不过在实际的开发中,更多的时候,我们会一边写一边创建新表,所以就把两种方法都写出来好了。

    #
    _obj = {'netStates':HostInfo['NetStates'],'ip':HostInfo['ip'],'mem':HostInfo['memoInfo'],'cpu':HostInfo['cpuInfo'],'time':HostInfo['timeInfo']}
            obj = models.Monitor.objects.create(**_obj)
    
    #
    models.Charactor.objects.fileter(cid = cID).delete()
    
    #
    obj = object()
    abj = models.Charactor.objects.get(cid = cID)
    obj.cid = '1'
    obj.save()
    
    #
    objLst0 = models.Charactor.objects.filter(cid = cID)
  • 相关阅读:
    OnEraseBkgnd、OnPaint与画面重绘
    .编译ADO类DLL时报错的解决方案
    VC列表框样式
    Codeforces 131D. Subway 寻找环树的最短路径
    Codeforces 103B. Cthulhu 寻找奈亚子
    Codeforces 246D. Colorful Graph
    Codeforces 278C. Learning Languages 图的遍历
    Codeforces 217A. Ice Skating 搜索
    Codeforces 107A. Dorm Water Supply 搜图
    Codeforces 263 D. Cycle in Graph 环
  • 原文地址:https://www.cnblogs.com/1a2a/p/8663542.html
Copyright © 2011-2022 走看看