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
django操作非ORM创建的表的更多相关文章
- django 操作数据库--orm(object relation mapping)---models
思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...
- 在Django中使用ORM创建图书管理系统
一.ORM(对象关系映射) 很多语言的web框架中都有这个概念 1. 为什么要有ORM? 1. 写程序离不开数据,要使用数据就需要连接数据库,但是不同的数据库在sql语句上(mysql,oracle等 ...
- Django学习手册 - ORM 多对多表
定义表结构: class Host(models.Model): hostname = models.CharField(max_length=32) port = models.IntegerFie ...
- 如何使用django操作数据库,向原有表中添加新的字段信息并建立一个多对多的关系?
(注:本人用的pycharm开发工具) 1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段并和author建立多对多关系,author表新增 ...
- 使用impala操作kudu之创建kudu表(内部表和外部表)
依次启动HDFS.mysql.hive.kudu.impala 登录impala的shell控制端: Impala-shell 1:使用该impala-shell命令启动Impala Shell .默 ...
- ORM创建多表以及多表的增删改查
一. 多表的创建 1. 一对一 在哪个表中设置都行,但是添加数据的时候需要现在没有外键的表中添加数据 models.OneToOneField(to="表名",to_field=& ...
- django操作数据库 ORM
一,数据库连接 创建类 a. 在models.py中先写类 from django.db import models # 表名是app01_userinfo class UserInfo(models ...
- Django入门4: ORM 数据库操作
大纲 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段 ...
- Django ORM创建数据库
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
随机推荐
- 给adobe acrobat reader 添加图片注释
首先展示一下 我添加注释的结果, 下面是我的做法: 在Adobe Acrobat 中打开Sample.pdf文档,点开文档右边的“工具”-“内容”-选择“编辑对象”,鼠标光标变成实心箭头+右下角小方 ...
- Spring源码解读:核心类DefaultListableBeanFactory的继承体系
1 简介 我们常用的ClassPathXmlApplicationContext是AbstractRefreshableApplicationContext的子类,而DefaultListableBe ...
- [NOI2017]蚯蚓排队(链表+hash)
这题看题面感觉挺玄学的,但其实会挂链式hash就能暴力切了,就是纸老虎,考察选手的语文水平.不过三年没写挂链hash也应该写一下了…… 首先模数设成自然溢出ull,然后挂链时的模数取2^24.然后就可 ...
- 探讨 Git 代码托管平台的若干问题 - 2019 版
关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System.1986 年 Concurrent Vers ...
- java线程——notifyAll通知的泄露
版权声明:本文为CSDN博主「兰亭风雨」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/ns_code/ar ...
- PAT Advanced 1015 Reversible Primes (20) [素数]
题目 A reversible prime in any number system is a prime whose "reverse" in that number syste ...
- Salt常用命令二
############################模块############################ 查看模块列表——module salt ‘minion’ sys.list_mo ...
- 使用GitHub Pages服务进行域名URL转发
有时,你注册了一个域名,但是你没有搭建服务器.你希望这个域名能指向你的主页/博客/微博等.但是,很多域名注册商不提供这种服务,或者这是一项收费服务.这时你可以使用GitHub来实现这一功能. 你需要导 ...
- \_\_module\_\_和\_\_class\_\_
目录 __module__和__class__ 一.__module__ 二.通过字符导入模块 三.__class__ __module__和__class__ # lib/aa.py class C ...
- look and say 外观数列的python实现
#look_and_say 外观数列 如果我们把 1 作为Look-and-say 数列的第一项,那么,它的前几项是这样的: 1, 11, 21, 1211, 111221, 312211, 1311 ...