首页 > 数据库技术 > 详细

python——django使用mysql数据库(二)

时间:2016-01-23 10:17:57      阅读:323      评论:0      收藏:0      [点我收藏+]

  上一篇中,我们已经讲述了如何初始化一个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)

 

  

python——django使用mysql数据库(二)

原文:http://www.cnblogs.com/Eva-J/p/5152823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!