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)
  • 相关阅读:
    XML(学习笔记)
    css样式学习笔记
    Request(对象)
    sql一些错误修改的总结
    转载(如何学习C#)
    sql server(学习笔记2 W3Cschool)
    sql sqrver(学习笔记1 W3Cschool)
    关于 flutter开发碰到的各种问题,有的已经解决有的一直没解决或者用其他方法替代
    关于 Flutter IOS build It appears that your application still contains the default signing identifier.
    关于 flutter本地化问题 The getter 'pasteButtonLabel' was called on null
  • 原文地址:https://www.cnblogs.com/1a2a/p/8663542.html
Copyright © 2011-2022 走看看