以下为学习笔记,用来备忘、交流
工具:树莓派 3B+ / Raspberry Pi 3B+
系统:带桌面的Raspbian Buster 基于Debian-Buster的桌面图像
Raspbian Buster with desktop Image with desktop based on Debian Buster
Release date:2019-09-26
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
数据库:mariadb-server-10.0
Django: 3.0.2
继续 模型层
安装数据库驱动mysqlclient
Django不能直接使用mariadb/mysql,也可以说是Django用的是python语句,python还需要安装中间程序mysqlclient来操作mariadb/mysql数据库。
安装MySQL DB API驱动程序mysqlclient
详见:https://docs.djangoproject.com/zh-hans/3.0/ref/databases/#mysql-notes 点我查看
- 进入虚拟环境haunjing2
source huanjing2/bin/activate
- 查看已安装包和包的版本
pip3 list
- 指定清华源安装 mysqlclient
pip3 install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple
创建新的数据库
先登录数据库,再创建新的数据库xiangmu1
create database xiangmu1 charset=utf8;
配置Django
- 打开项目文件夹下的settings.py文件,改为如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xiangmu1',
'USER': 'root',
'PASSWORD': '数据库密码',
'HOST': 'localhost',
'PORT': '3306',
#新添加
'OPTIONS':{
'init_command':"SET sql_mode='STRICT_TRANS_TABLES'",
'charset':'utf8mb4',
},
}
}
- 在settings.py文件添加应用yingyong01
- 本地化
设置语言和时区
LANGUAGES = [
('zh-Hans', ('Chinese')),
]
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
创建模型
分析确定要做两个数据库表(设备表和记录表),关系是一对多
设备表:表名、设备名、组装日期、序列号、主板版本、组装人、软件版本、检验人、是否已出售、电机厂家、电机批次、备注、是否删除、创建时间
记录表:表名、记录类型、内容、使用次数、操作人、记录时间。
代码如下:
# Create your models here.
class ShebeiInfo(models.Model):
ShebeiName=models.CharField(max_length=30)
SzuzhuangDate=models.DateTimeField()
SxulieHao=models.CharField(max_length=20)
Szhuban=models.CharField(max_length=10)
SzuzhuangRen=models.CharField(max_length=10)
Sruanjian=models.CharField(max_length=10)
SjianyanRen=models.CharField(max_length=10)
Smaichu=models.BooleanField(default=False)
SdianjiChangjia=models.CharField(max_length=20)
SdianjiPici=models.CharField(max_length=20)
Sbeizhu=models.CharField(max_length=50)
isDelete=models.BooleanField(default=False)
StianbiaoTime=models.DateTimeField()
class JiluInfo(models.Model):
JiluLeixing=models.CharField(max_length=10)
Jneirong=models.CharField(max_length=200)
JshiyongCishu=models.CharField(max_length=10)
JcaozuoRen=models.CharField(max_length=10)
JiluTime=models.DateTimeField()
isDelete=models.BooleanField(default=False)
Shebei=models.ForeignKey(ShebeiInfo, on_delete=models.CASCADE)
注释:
CharField(max_length=字符长度)
:字符串,默认的表单样式是 TextInputDateTimeField
:使用Python的datetime.datetime实例表示的日期和时间BooleanField
:true/false 字段,此字段的默认表单控制是CheckboxInput
更多内容参考:https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial02/ 点我查看
生成迁移文件
python manage.py makemigrations
注意文件路径,记得在虚拟环境2里
运行数据库迁移
python manage.py migrate
第一次运行出现一个警告,重新配置了一下数据库,正常了
登录数据库查看
Django已经在数据库新增了内容