当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]一.前言在经过上篇《Dragonboard410c 服务器系列六之用户交互系统》的学习,博主相信大家都能大致掌握Django框架基础的web服务器搭建以及简单的数据交互。但是,往深处想,

一.前言

在经过上篇《Dragonboard410c 服务器系列六之用户交互系统》的学习,博主相信大家都能大致掌握Django框架基础的web服务器搭建以及简单的数据交互。但是,往深处想,Django是如何存储不同页面的交互数据的?相信有看过博主之前上传的代码的童鞋都已经知晓,这也是我们今天要讨论的主题:数据库。

二.数据库

1.概念:

数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。可以说数据库的设计是web后台架构设计的重中之重,合理的数据库设计将会为后台节省大量的运算步骤和提高整体的运行效率,这也是衡量一个后台工程师功底的重要标准。

2.Django的数据库:

2.1.介绍:

Django的数据库,我们称之为模型,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在setTIngs.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用。当然,我们也可以根据自己的需要去自定义filed,也就是自己的模型。比如上篇的用户交互系统,我们就不仅继承的原有MyUser,还自定义了消息的模型:online_message以及系统的状态模型:online_SystemStatus.

2.2 创建步骤:

2.2.1.创建django项目:

django-admin startproject test

2.2.2.创建webapp:

cd test

django-admin startapp sql

2.2.3.添加webapp进test项目:

vim test/test/setTIngs.py

INSTALLED_APPS = (

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staTIcfiles',

'sql',

)

2.2.4.定义sql的数据模型:

from django.db import models

class Person(models.Model):

name = models.CharField(max_length=30)

age = models.IntegerField()

2.2.5.初始化数据库数据:

cd ~/test

python manage.py makemigraTIons sql

python manage.py migrate

3.实例模型代码:

#coding:utf8

from django.db import models

from django.contrib.auth.models import (

BaseUserManager, AbstractBaseUser, PermissionsMixin)

class MyUserManager(BaseUserManager):

# def _create_user(self, username, email, password, **extra_fields):

def _create_user(self, username, password, **extra_fields):

"""

Creates and saves a User with the given username, email and password.

"""

if not username:

raise ValueError('The given username must be set')

# email = self.normalize_email(email)

# user = self.model(username=username, email=email, **extra_fields)

user = self.model(username=username, **extra_fields)

user.set_password(password)

user.save(using=self._db)

return user

# def create_user(self, username, email, password, **extra_fields):

def create_user(self, username, password, **extra_fields):

extra_fields.setdefault('is_staff', False)

extra_fields.setdefault('email',"")

extra_fields.setdefault('phone',"")

extra_fields.setdefault('haarValue',"")

extra_fields.setdefault('avatarImg',"")

# extra_fields.setdefault('text',"")

# extra_fields.setdefault('video',"")

# extra_fields.setdefault('time',"")

return self._create_user(username, password, **extra_fields)

# return self._create_user(username, email, password, **extra_fields)

# def create_superuser(self, username, email, password, **extra_fields):

def create_superuser(self, username, password, **extra_fields):

extra_fields.setdefault('is_staff', True)

if extra_fields.get('is_staff') is not True:

raise ValueError('Superuser must have is_staff=True')

#拓展user数据 by xiao

#get

#to

#message_flag

#text

#video

#time

# extra_fields.setdefault('got',username)

# extra_fields.setdefault('to',username)

# extra_fields.setdefault('message_flag',"1")

# extra_fields.setdefault('text',"")

# extra_fields.setdefault('video',"")

# extra_fields.setdefault('time',"")

return self._create_user(username, password, **extra_fields)

# return self._create_user(username, email, password, **extra_fields)

class MyUser(AbstractBaseUser, PermissionsMixin):

username = models.CharField(max_length=254, unique=True, db_index=True)

email = models.CharField(max_length=254)

phone = models.CharField(max_length=254)

haarValue = models.CharField(max_length=254)

avatarImg = models.CharField(max_length=254)

#email = models.EmailField('email address', max_length=254)[!--empirenews.page--]

#text=models.CharField(max_length=254, unique=True, db_index=True)

is_staff = models.BooleanField('staff status', default=False)

# userID = models.IntegerField(default=1) #用户独有的ID

# is_active = models.BooleanField('active', default=True)

# got = models.CharField(max_length=254,default=username)

# to = models.CharField(max_length=254,default=username)

# message_flag = models.CharField(max_length=254, default=1)

# text = models.CharField(max_length=254, default="")

# video = models.CharField(max_length=254,default="")

# time = models.CharField(max_length=254,default="")

USERNAME_FIELD = 'username'

# REQUIRED_FIELDS = ['email']

objects = MyUserManager()

class Meta:

db_table = 'myuser'

# def get_full_name(self):

# return self.username

# def get_short_name(self):

# return self.username

#建立推送消息的模型

class Message(models.Model):

# username = models.CharField(max_length=254) #消息推送者的名字

ownerID = models.IntegerField(default=1)

pushID = models.IntegerField(default=1)

infoType = models.IntegerField(default=0)

infoSubject = models.CharField(max_length=254)

infoContent = models.CharField(max_length=254)

filePath = models.CharField(max_length=1000)

pushTim = models.CharField(max_length=254)

infoValidityTime = models.CharField(max_length=254)

isTop = models.IntegerField(default=0)

viewWeight = models.IntegerField(default=1)

def __unicode__(self):

# 在Python3中使用 def __str__(self)

return self.name

class SystemStatus(models.Model): #实例化对象:online_message MMDB.updateSystemStatus('peopleInfront',-1,0,'no people in front')

statusName = models.CharField(max_length=30,default="peopleInfront")

statusValue = models.IntegerField(default=-1)

statusParam = models.IntegerField(default=0)

statusDiscirption = models.CharField(max_length=50,default="no people in front")

def __unicode__(self):

# 在Python3中使用 def __str__(self)

return self.name

三.例程分享:http://pan.baidu.com/share/link?shareid=3536829173&uk=1812979481

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭