zoukankan      html  css  js  c++  java
  • django操作非ORM创建的表

    问题:django的ORM怎么连接已存在的表,然后进行增删查改操作?

        工作中会遇见很多二次开发的时候,表都是已经创建好的,用django的ORM进行二次开发,怎么操作数据库中的表呢?

    下面介绍一种完美解决方案:

    现有一张表,表名为tencent_depth,表结构如下:

    mysql> desc tencent_depth;
    +------------------+--------------+------+-----+---------+----------------+
    | Field            | Type         | Null | Key | Default | Extra          |
    +------------------+--------------+------+-----+---------+----------------+
    | id               | int(11)      | NO   | PRI | NULL    | auto_increment |
    | Positionname     | varchar(100) | NO   |     | NULL    |                |
    | Workingplace     | char(20)     | YES  |     | NULL    |                |
    | Positioncategory | char(20)     | YES  |     | NULL    |                |
    | Peoplenumber     | char(10)     | YES  |     | NULL    |                |
    | Operatingduty    | text         | YES  |     | NULL    |                |
    | Jobrequirements  | text         | YES  |     | NULL    |                |
    +------------------+--------------+------+-----+---------+----------------+
    8 rows in set (0.00 sec)

    表里面有很多数据,用scrapy爬取的腾讯招聘信息,一共3827条记录

    怎么通过django的ORM操作(增删改查),让数据可视化(这里只写models.py相关配置)

     方案如下:

    修改models.py文件

    class tencent_depth(models.Model):
        id = models.AutoField(primary_key=True)
        Positionname = models.CharField(max_length=100)
        Workingplace = models.CharField(max_length=20)
        Positioncategory = models.CharField(max_length=20)
        Peoplenumber = models.CharField(max_length=10)
        Operatingduty = models.TextField(max_length=1000)
        Jobrequirements = models.TextField(max_length=1000)
    
        class Meta:  # 必须要写这个类
            db_table = 'tencent_depth'  # 指定表名

    删除migrations目录下生成的文件,然后执行这个命令就行

    python manage.py makemigrations 

    查询成功

           添加一个字段,插入一条记录,并获取值显示出来(主要看看增删改查有问题没)

    修改models.py文件

    from django.db import models
    
    class tencent_depth(models.Model):
        id = models.AutoField(primary_key=True)
        Positionname = models.CharField(max_length=100)
        Workingplace = models.CharField(max_length=20)
        Positioncategory = models.CharField(max_length=20)
        Peoplenumber = models.CharField(max_length=10)
        Operatingduty = models.TextField(max_length=1000)
        Jobrequirements = models.TextField(max_length=1000)
    
        # 添加一个时间字段
        create_time = models.DateTimeField(null=True)
    
        class Meta:
            db_table = 'tencent_depth'

    修改view.py视图函数

    from django.shortcuts import render,HttpResponse,redirect
    
    # Create your views here.
    from app import models
    import datetime
    
    def index(request):
        data = datetime.datetime.now()
        data = data.strftime("%Y-%m-%d %H:%I:%S")  # 获取本地格式化时间
        
        # 添加一条测试记录
        ret = models.tencent_depth.objects.create(Positionname='本地测试(运维开发)',
                                            Workingplace='本地测试(上海)',
                                            Positioncategory='本地测试(技术)',
                                            Peoplenumber='本地测试(1人)',
                                            Operatingduty='本地测试(无)',
                                            Jobrequirements='本地测试(无)',
                                            create_time=data,
                                            )
        return render(request, 'index.html', {'ret': ret})

    修改templates里面的index.html

    {% extends 'base.html' %}
    
    {% block content %}
        <div class="jumbotron">
    
            <p>{{ ret.Positionname }}</p>
            <p>{{ ret.Workingplace }}</p>
            <p>{{ ret.Positioncategory }}</p>
            <p>{{ ret.Operatingduty }}</p>
            <p>{{ ret.Jobrequirements }}</p>
            <p>{{ ret.create_time}}</p>  # 这里传过来的时间已经是格式化时间,所以不需要用date过滤器了
            <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
        </div>
    {% endblock %}
    
    {{% block title %}
    <title>Index</title>
    {% endblock %}}

    然后执行

    python manage.py makemigrations

    python manager.py migrate

  • 相关阅读:
    FAT32文件系统的存储组织结构(一)
    导出CCS3.3数据及使用matlab处理的方法
    lua入门之二:c/c++ 调用lua及多个函数返回值的获取
    汇编入门学习笔记 (七)—— dp,div,dup
    Linux(CentOS)的server安装及配置图解(图文)
    利用cURL会话获取一个网页
    超级账本环境搭建fabric
    以太坊主链同步
    geth 命令
    solc 编译Solidity
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/11582226.html
Copyright © 2011-2022 走看看