Django 数据库ORM操作

CMDB实现数据展示功能部分代码。

views.py
def asset(request):
    asset = Asset.objects.all()
    return render_to_response("asset.html",{‘asset‘: asset})
    
models.py
class Asset(models.Model):
    ipaddr = models.CharField(max_length=20, verbose_name=u‘IP地址‘, primary_key=True)  #需定义primary_key,否则会自动创建id列
    hostname = models.CharField(max_length=30, verbose_name=u‘主机名‘)
    nodes = models.CharField(max_length=20, verbose_name=u‘应用节点‘)
    applications = models.CharField(max_length=30, verbose_name=u‘应用名‘)
    group = models.CharField(max_length=20, verbose_name=u‘应用组名‘)
    memory = models.CharField(max_length=5, verbose_name=‘内存大小‘)
    env = models.CharField(max_length=5, verbose_name=‘环境变量‘)
    flag = models.PositiveSmallIntegerField(verbose_name=u‘flag‘)

    #def __unicode__(self):
    #    return u‘%s,%s,%s,%s,%s,%s,%s,%s‘ %(self.ipaddr, self.hostname, self.nodes, self.app, self.group, self.memory, self.disk, self.cpu)
    class Meta:
        db_table = ‘fcenv_copy‘  #表名,默认为app名+类名
        verbose_name = u‘主机资产信息‘
        verbose_name_plural = u‘主机资产信息管理‘
        
asset.html

<table class="table table-striped table-bordered table-hover " id="editable" name="editable">
    <thead class="fixedThead">
        <tr>
<!--            <th class="text-center">
                <input id="checkall" type="checkbox" class="i-checks" name="checkall" value="checkall" data-editable="false" onclick="check_all(‘asset_form‘)">
            </th>  -->
            <th class="text-center" name="ip"> IP地址 </th>
            <th class="text-center" width="80px"> 机器名 </th>
            <th class="text-center"> 节点 </th>
            <th class="text-center" width="300px"> 应用名称 </th>
            <th class="text-center" width="100px"> 组别 </th>
            <th class="text-center"> 内存 </th>
            <th class="text-center" width="200px"> 环境变量 </th>
            <th class="text-center"> flag </th>
            <th class="text-center" width="200px"> 操作 </th>
        </tr>
    </thead>
    <tbody class="scrollTbody">

{% for value in asset %}
<tr class="gradeX">
<td class="text-center">{{ value.ipaddr }}</a></td>
<td class="text-center hostname">{{ value.hostname }}</a></td>
<td class="text-center">{{ value.nodes }}</a></td>
<td class="text-center">{{ value.applications }}</a></td>
<td class="text-center">{{ value.group }}</a></td>
<td class="text-center">{{ value.memory }}</a></td>
<td class="text-center">{{ value.env }}</a></td>
<td class="text-center">{{ value.flag }}</a></td>
<td class="text-center" data-editable="false">
    <a href="#" class="btn btn-xs btn-info">编辑</a>
    <a value="#" class="conn btn btn-xs btn-warning">连接</a>
    <a value="#" class="btn btn-xs btn-danger asset_del">删除</a>
</td>
{% endfor %}
</tr>
    </tbody>
</table>

以下是常用ORM操作:


    # models.Tb1.objects.create(c1=‘xx‘, c2=‘oo‘)  增加一条数据,可以接受字典类型数据 **kwargs

    # obj = models.Tb1(c1=‘xx‘, c2=‘oo‘)

    # obj.save()

    # 查

    #

    # models.Tb1.objects.get(id=123)         # 获取单条数据,不存在则报错(不建议)

    # models.Tb1.objects.all()               # 获取全部

    # models.Tb1.objects.filter(name=‘seven‘) # 获取指定条件的数据

    # 删

    #

    # models.Tb1.objects.filter(name=‘seven‘).delete() # 删除指定条件的数据

    # 改

    # models.Tb1.objects.filter(name=‘seven‘).update(gender=‘0‘)  # 将指定条件的数据更新,均支持 **kwargs

    

    # obj = models.Tb1.objects.get(id=1)    # 修改单条数据

    # obj.c1 = ‘111‘

    # obj.save()                                                 

  

  

    # 获取个数

    #

    # models.Tb1.objects.filter(name=‘seven‘).count()

    # 大于,小于

    #

    # models.Tb1.objects.filter(id__gt=1)              # 获取id大于1的值

    # models.Tb1.objects.filter(id__lt=10)             # 获取id小于10的值

    # models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值

    # in

    #

    # models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据

    # models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in

    # contains

    #

    # models.Tb1.objects.filter(name__contains="ven")

    # models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感

    # models.Tb1.objects.exclude(name__icontains="ven")

    # range

    #

    # models.Tb1.objects.filter(id__range=[1, 2])   # 范围bettwen and

    # 其他类似

    #

    # startswith,istartswith, endswith, iendswith,

    # order by

    #

    # models.Tb1.objects.filter(name=‘seven‘).order_by(‘id‘)    # asc

    # models.Tb1.objects.filter(name=‘seven‘).order_by(‘-id‘)   # desc

    # limit 、offset

    #

    # models.Tb1.objects.all()[10:20]

    # group by

    from django.db.models import Count, MinMaxSum

    # models.Tb1.objects.filter(c1=1).values(‘id‘).annotate(c=Count(‘num‘))

    # SELECT "app01_tb1"."id", COUNT("app01_tb1"."num") AS "c" FROM "app01_tb1" WHERE "app01_tb1"."c1" = 1 GROUP BY "app01_tb1"."id"

效果图。

附件是样式文件。

时间: 2024-08-04 10:14:08

Django 数据库ORM操作的相关文章

Django 数据库ORM 操作 - 字段的类型和参数

通过Django的ORM创建表的时候,我们需要定义自己的类. 定义类的时候,他有各种各样的字段类型,每个字段都有自己的参数可以进行配置,下面简单的归纳一下. 首先看看字段的类型.尽管Python提供了近乎20种类型,他转换成数据库表之后,其实本质就是4个类型:字符串,数字,时间和二进制. AutoField(Field)     - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField)     - bigint自增列,必须填入参数 prim

Django 数据库ORM操作 - 单表的创建,增加,删除,更改和查询

Django里面,管理数据库和sqlarchemy类似,也是通过orm框架来实现的.所有的数据库的建立,都是在model.py里面通过类来实现的. 首先看看如何创建一个单表: a. 先定义一个类,继承models.Model, 然后根据需求定义参数,这些参数的类型和变量后面会进一步阐述 models.py from django.db import models class UserInfo(models.Model):     username = models.CharField(max_l

Django的orm操作数据库

Django的orm操作数据库 django学习链接:https://www.cnblogs.com/clschao/articles/10526431.html 单表操作学习链接:https://www.cnblogs.com/clschao/articles/10427807.html about mvc或者mvc框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,

Django之ORM操作(***)

Django之ORM操作(***) 生成数据库: python manage.py makemigrations python manage.py migrate 常用命令: python manage.py runserver 0.0.0.0 python manage.py startapp appname python manage.py syncdb 创建superuser:python manage.py createsuperuser 在项目名中的__init__ .py 加: im

【Django】ORM操作#2 &#343866;

目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 关于Mate类 聚合查询 aggregage() 分组查询 annotate() F查询 Q查询 事务 其它鲜为人知的操作 原文: http://blog.gqylpy.com/gqy/264 @ *** 必知必会的13条查询方法 ==1. all()== 查询所有结果 . ==2. get(kw

django的 ORM 操作 增加和查询

ORM  对象关系映射 在数据库中,实现对数据的增删改查,使用的是SQ语句, 在django中,通过python代码,实现对数据库的增删改查,这就是ORM. 在python中,用类名  代表 django数据库的表名, 用对象 ,代表django数据库的一条记录, ORM 就是封装了SQ语句,给对象进行增删改查,实现对数据库的操作, 在settings 文件中,默认了splite的数据库,自己可以修改 DATABASES = { 'default': { 'ENGINE': 'django.db

Django 之 orm操作

静态文件配置 所有的html文件默认都写在templates文件夹下 所有的静态文件(css,js,前端第三方类库)默认都放在static文件夹下 html页面引入外部资源的方式:cdn.本地 静态文件配置 STATIC_URL: 和静态文件夹的名字没有关系 默认情况下这个前缀跟静态文件夹名字一样!!! html文件head导入的本地数据,一次前缀开头,否则无法实现相应的效果 STATICFILES_DIRS: 暴露给外界能够访问服务器静态文件夹下面所有的资源 会依次查找列表中所有的静态文件路径

Django之ORM操作

ORM基本增删改查操作: 1 # 增 2 models.Tb1.objects.create(c1='xx', c2='oo') 增加一条数据,可以接受字典类型数据 **kwargs 3 obj = models.Tb1(c1='xx', c2='oo') 4 obj.save() 5 6 # 查 7 models.Tb1.objects.get(id=123) # 获取单条数据,不存在则报错(不建议) 8 models.Tb1.objects.all() # 获取全部 9 models.Tb1

django的ORM操作 删除和编辑

向server端传送数据,有2中方法,1 是 通过url 地址, 2 是通过路径 #向server端传参数方式 #1,通过数据 http://127.0.0.1:8000/blog/?id=2 #2, 通过路径 http://17.0.0.1:8000/blog/20 # url(r'blog/(\d{4})') 删除功能: 在url文件中,创建一个delbook路径, 通过url的地址拿到id实现删除 urlpatterns = [ url(r'^admin/', admin.site.url