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等诸多功能. ...
随机推荐
- UVALive 4329 树状数组第二题
大白书上的题目,比较巧妙的是其分析,为了求某个i点做裁判的时候的情况数,只要知道左边有多少比它小的记为ansc,右边有多少比它小的记为ansd,则总种数,必定为 ansc*(右边总数-ansd)+an ...
- 吴裕雄--天生自然JAVA线程编程笔记:创建线程
public class ThreadRuning extends Thread{ public ThreadRuning(String name){ //重写构造,可以对线程添加名字 super(n ...
- h5-自定义视屏播放器
1.html代码 <h3 class="playerTitle">视屏播放器</h3> <div class="player"&g ...
- 01 语言基础+高级:1-8 File类与IO流_day09【字节流、字符流】
day09[字节流.字符流] 主要内容 IO流 字节流 字符流 异常处理 Properties 教学目标 能够说出IO流的分类和功能 能够使用字节输出流写出数据到文件 能够使用字节输入流读取数据到程序 ...
- SSM到Spring Boot-校园商铺平台:第01章 开发准备
第01章 开发准备 环境准备 创建一个Maven项目作为开始 添加一个 Server Runtime 添加maven的java编译插件 <build> <finalName>$ ...
- WEB网站的favicon.ico的设置
一.什么是favicon.ico Favicon是Favorites Icon的缩写,favicon.ico是指显示在浏览器收藏夹和地址栏网站网址前面的个性化图标,常被成为网页小图标.网站缩略图标或者 ...
- ZJNU 1531 - 丢手绢--中级
可以将相同的人数分块存在数组gp中先 例如RRGGGRBBBBRR 则gp[1~5]={2,3,1,4,2} 首先可以知道,如果要让没有相邻的相同,只需要每个gp[i]/2向下取整即可得出最少需要改变 ...
- linux中ftp中文名乱码问题
问题触发环境 1. java中使用org.apache.commons.net.ftp.FTPClient包 2. 通过chrome浏览器的file标签上传文件 3. 在windows上部署的File ...
- [单调队列]XKC's basketball team
XKC's basketball team 题意:给定一个序列,从每一个数后面比它大至少 \(m\) 的数中求出与它之间最大的距离.如果没有则为 \(-1\). 题解:从后向前维护一个递增的队列,从后 ...
- eclipse配置svn若干点
eclipse 或者针对java的,或者eclipse for php ,都行. 可以直接在线安装svn插件,也可以下载好插件后自己配置. ------------ 一下转载自http://blog. ...