Django默认采用了sqlite3,很多文章里会很暴力地说要改用mysql。
大家可以到网上查一下sqlite和sqlite3,它是一种轻型的嵌入式数据库引擎,占用资源非常低,处理速度比mysql还快。
它的缺点在并发大的时候,会有锁的风险。
不过笔者当前的项目是一个量非常小的网站项目,使用sqlite3足以,没必要花钱再去云上买一个mysql。
如果要使用,那继续保持原来的Django的setting配置,然后命令行新建一个app:
python3 manage.py startapp datas
发现项目目录里出现了datas目录。
datas目录里有一个models.py的文件,在文件里新建的类就是一张表,表字段声明之类可参考博客:
https://www.cnblogs.com/yangmv/p/5327477.html
如新建apply表:
from django.db import models
# Create your models here.
class Apply(models.Model):
sid = models.AutoField(primary_key=True)
phone = models.CharField(max_length=50)
add_time = models.DateField(auto_now_add=True)
新建完后运行解释命令:
python3 manage.py makemigrations
会进行初始化,然后再运行执行命令:
python3 manage.py migrate
会将表都写入项目目录里的db.sqlite3文件中。
如果datas库中有改动,则运行更新结构命令 python3 manage.py makegrations datas
打开命令行,输入:
sqlite3 db.sqlite3
打开sqlite3,输入 select name from sqlite_master;
仔细查看所有的数据表表名,发现有一个名字 “datas_apply"
这说明sqlite3内datas目录是前缀,加类名后就是表的名字。
如app名字命名为Sys,那么生成表明就是 sys_apply 表。
没什么问题,输入:.quit 就退出sqlite3模式。
说明表已经成功建立起来了。
后面的表操作,就和mysql一模一样了,可参考上面提到的博客文章。
在部署时,会Django报了两个相关的问题:
attempt to write a readonly database
unable to open database file
这个是文件权限和文件夹权限导致。
先是对 db.sqlite3 进行赋权,chmod 777 db.sqlite3
发现报了第二个问题,那是因为权限不够无法在当前目录生成临时文件,于是对上一级目录进行赋权,解决上述问题。