问题: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

django操作非ORM创建的表的更多相关文章

  1. django 操作数据库--orm(object relation mapping)---models

    思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...

  2. 在Django中使用ORM创建图书管理系统

    一.ORM(对象关系映射) 很多语言的web框架中都有这个概念 1. 为什么要有ORM? 1. 写程序离不开数据,要使用数据就需要连接数据库,但是不同的数据库在sql语句上(mysql,oracle等 ...

  3. Django学习手册 - ORM 多对多表

    定义表结构: class Host(models.Model): hostname = models.CharField(max_length=32) port = models.IntegerFie ...

  4. 如何使用django操作数据库,向原有表中添加新的字段信息并建立一个多对多的关系?

    (注:本人用的pycharm开发工具) 1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段并和author建立多对多关系,author表新增 ...

  5. 使用impala操作kudu之创建kudu表(内部表和外部表)

    依次启动HDFS.mysql.hive.kudu.impala 登录impala的shell控制端: Impala-shell 1:使用该impala-shell命令启动Impala Shell .默 ...

  6. ORM创建多表以及多表的增删改查

    一. 多表的创建 1. 一对一 在哪个表中设置都行,但是添加数据的时候需要现在没有外键的表中添加数据 models.OneToOneField(to="表名",to_field=& ...

  7. django操作数据库 ORM

    一,数据库连接 创建类 a. 在models.py中先写类 from django.db import models # 表名是app01_userinfo class UserInfo(models ...

  8. Django入门4: ORM 数据库操作

    大纲 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段 ...

  9. Django ORM创建数据库

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

随机推荐

  1. Bugku杂项(1—28)

    1.签到题 只要关注公众号就可以得到 flag---开胃菜 2.这是一张单纯的图片 用Winhex打开,会发现最下面有一行编码: key{you are right} 是一串HTML编码,解密下就行了 ...

  2. SQL基础教程(第2版)第3章 聚合与排序:3-3 为聚合结果指定条件

    第3章 聚合与排序:3-3 为聚合结果指定条件 ● 使用COUNT函数等聚合函数对表中数据进行汇总操作时,为其指定条件的不是WHERE子句,而是HAVING子句.● 聚合函数可以在SELECT子句. ...

  3. Spring源码解读:核心类DefaultListableBeanFactory的继承体系

    1 简介 我们常用的ClassPathXmlApplicationContext是AbstractRefreshableApplicationContext的子类,而DefaultListableBe ...

  4. Linux-常见信号介绍

    1.SIGINT           2 Ctrl + C时OS送给前台进程组中每个进程 2.SIGABRT             6              调用abort函数,进程异常终止 3 ...

  5. 字符串中子序列出现次数(dp)

    躲藏 链接:https://ac.nowcoder.com/acm/problem/15669来源:牛客网 题目描述 XHRlyb和她的小伙伴Cwbc在玩捉迷藏游戏. Cwbc藏在多个不区分大小写的字 ...

  6. dotnet core 链接mongodb

    导入命名空间 using MongoDB.Bson; using MongoDB.Driver; 测试示例: var client = new MongoClient("mongodb:// ...

  7. 吴裕雄--天生自然ShellX学习笔记:Shell 输入/输出重定向

    大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令通常将其输出写入到标准输出,默 ...

  8. [PHP防火墙]输入内容存在危险字符,安全起见,已被本站拦截

    之前在很多的网站都看到了360webscan的攻击拦截脚本,正好分析并学习一下. 下载地址:http ://webscan.360.cn/protect/down?domain = blog.dybo ...

  9. malloc 底层实现及原理

    摘要:偶尔看到面试题会问到 malloc 的底层原理,今天就来记录一下,毕竟学习要“知其所以然”,这样才会胸有成竹. 注:下面分析均是基于 linux 环境下的 malloc 实现.步骤是:先总结结论 ...

  10. 负载均衡配置篇(Nginx)

    负载均衡 == 分身的能力. 既然要有分身的能力嘛,这好办,多弄几台服务器就搞定了.今天我们讲的实例嘛…..我们还是先看图比较好: 还是图比较清晰,以下我都用别名称呼: PA : 负载均衡服务器/WE ...