python——django使用mysql数据库(二)
上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢?
如还未进行初始化数据库操作,请参考python——django使用mysql数据库(一):http://www.cnblogs.com/Eva-J/p/5139990.html
创建表
我是先使用mysql的客户端进行表创建的。当然还可以不这样做,等我们讲完下面的内容再回来说。
建立映射关系
在工程目录下随便找一个位置,创建一个models.py文件(django项目启动的时候会自动去工程目录下面找这个文件,请不要创建与之同名的文件夹,以免django混乱),接下来就是在这个文件中建立与settings文件中配置的db中表的映射了。
1 #!/usr/bin/env python 2 #-*-coding:utf-8-*- 3 __author__ = 'Eva_J' 4 from django.db import models 5 class User(models.Model): 6 class Meta: 7 db_table = 'user' 8 id = models.AutoField(max_length=11,db_column='UID',primary_key=True) 9 userName = models.CharField(max_length=255,db_column='username',blank = False) 10 passWord = models.CharField(max_length=255,db_column='password',blank = False) 11 cid = models.IntegerField(max_length=11,db_column='CID',blank = False) 12 13 class Charactor(models.Model): 14 class Meta: 15 db_table = 'charactor' 16 cid = models.AutoField(max_length=11,db_column='CID',primary_key=True) 17 charactor = models.CharField(max_length=255,db_column='charactor',blank = False) 18 hGroup = models.IntegerField(max_length=11,db_column='h_group',blank = False) 19 20 class Host(models.Model): 21 class Meta: 22 db_table = 'host' 23 hid = models.AutoField(max_length=11,db_column='HID',primary_key=True) 24 hGroup = models.CharField(max_length=255,db_column='h_group',blank = False) 25 hUser = models.CharField(max_length=255,db_column='h_user',blank = False) 26 hPwd = models.CharField(max_length=255,db_column='h_pwd',blank = False) 27 hostName = models.CharField(max_length=255,db_column='hostname',blank = False) 28 29 class Monitor(models.Model): 30 class Meta: 31 db_table = 'MonitorInfo' 32 mid = models.AutoField(max_length=11,db_column='MID',primary_key=True) 33 netStates = models.CharField(max_length=255,db_column='NetStates',blank = False) 34 ip = models.CharField(max_length=255,db_column='ip',blank = False) 35 mem = models.CharField(max_length=255,db_column='memo',blank = False) 36 cpu = models.CharField(max_length=255,db_column='cpu',blank = False) 37 time = models.CharField(max_length=255,db_column='time',blank = False)
各个字段的示意:
除了上述字段示意之外,注意一些细节:
首先,我们创建的这些类就对应了我们数据库中的表,类中的字段就是表的字段。
第二,这些类都应继承django.db中的models.Model模块。
第三,我们可以在类中创建一个Meta类指定表名,也可以不创建这个类,这样将会默认类名就是表名。
第四,我们建立这些映射关系必须和表中的一样,例如是否为空,长度等,如果和表中的设计不符,就会报错。
现在再回去说,我们如果不使用mysql的客户端或sql语句创建表,而是在django初始化数据表之前,就写好这个文件,在初始化db的时候,这些表就会自动创建。不过在实际的开发中,更多的时候,我们会一边写一边创建新表,所以就把两种方法都写出来好了。
表的使用
1 #增 2 _obj = {'netStates':HostInfo['NetStates'],'ip':HostInfo['ip'],'mem':HostInfo['memoInfo'],'cpu':HostInfo['cpuInfo'],'time':HostInfo['timeInfo']} 3 obj = models.Monitor.objects.create(**_obj) 4 5 #删 6 models.Charactor.objects.fileter(cid = cID).delete() 7 8 #改 9 obj = object() 10 abj = models.Charactor.objects.get(cid = cID) 11 obj.cid = '1' 12 obj.save() 13 14 #查 15 objLst0 = models.Charactor.objects.filter(cid = cID)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架