5. Django基本配置
5.1 django项目简介
外层的mysite/目录与Django无关,只是你项目的容器,可以任意重命名。
manage.py:一个命令行工具,管理Django的交互脚本。
内层的mysite/目录是真正的项目文件包裹目录,它的名字是你引用内部文件的Python包名,例如:mysite.urls。
mysite/__init__.py:一个定义包的空文件。
mysite/settings.py:项目的配置文件。
mysite/urls.py:路由文件,所有的任务都是从这里开始分配,相当于Django驱动站点的目录。
mysite/wsgi.py:一个基于WSGI的web服务器进入点,提供底层的网络通信功能,通常不用关心。
mysite/asgi.py:一个基于ASGI的web服务器进入点,提供异步的网络通信功能,通常不用关心。
5.2 数据库配置
5.2.1 创建一个数据库
CREATE DATABASE mysite CHARACTER SET utf8;
5.2.1 python mysql库安装
pip install mysqlclient
5.2.3 配置django的数据库为mysql
mysite/settings.py配置文件,这是整个Django项目的设置中心。Django默认使用SQLite3数据库,因为Python原生支持SQLite3数据库,所以你无须安装任何程序,就可以直接使用它。
mysite/settings.py:
# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
修改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'mysite', # 数据库名,先前创建的
'USER': 'root', # 用户名,可以自己创建用户
'PASSWORD': '123456', # 密码
'HOST': '127.0.0.1', # mysql服务所在的主机ip
'PORT': '3306', # mysql服务端口
}
}
5.3 创建django数据表
通过如下命令 : python manage.py migrate
会遍历setting.py中INSTALLED_APPS条目的数据库表, 初始化后mysite数据库中出现如下数据表:
6. 表构建
6.1 表定义
通过上面的需求,设计如下几张表
- 爬虫关键字配置表(testweb_CrawlerConf)
字段名 | 类型 | 长度 | 主键 | 备注 |
id | int | 11 | True | 自增ID |
keyword | string | 256 | True | 关键字,唯一 |
start_page | int | 11 |
| 起始页 |
end_page | int | 11 |
| 结束页 |
extra | text |
|
| json格式,扩展字段 |
- 爬虫结果表 (testweb_CrawlerRes)
字段名 | 类型 | 长度 | 主键 | 备注 |
id | int | 11 | True | 自增ID |
craw_id | int | 11 | True | 对应crawler_conf的id,唯一 |
host_ip | string | 256 |
| 主机IP |
belong | string | 256 |
| 归属地 |
main_dns | string | 256 |
| 主域名 |
link_dns | text |
|
| 关联域名 |
extra | text |
|
| json格式,扩展字段 |
- 操作日志表 (testweb_OprLog)
字段名 | 类型 | 长度 | 主键 | 备注 |
id | int | 11 | True | 自增ID |
status | string | 256 |
| 状态 |
action | string | 256 |
| 动作 |
start_time | string | 256 |
| 起始时间 |
end_time | string | 256 |
| 结束时间 |
user_id | string | 256 |
| 用户id |
user_name | string | 256 |
| 用户名 |
desc | string | 256 |
| 详细描述 |
extra | text | 256 |
| son格式,扩展字段 |
6.2 models定义迁移
在项目testweb/models下定义
from django.db import models
# Create your models here.
class CrawlerConf(models.Model):
'''
爬虫配置表
'''
id = models.AutoField(primary_key=True, unique=True, auto_created=True)
keyword = models.CharField(max_length=255, unique=True)
start_page = models.IntegerField()
end_page = models.IntegerField()
extra = models.TextField(null=True)
class CrawlerRes(models.Model):
'''
结果表
'''
id = models.AutoField(primary_key=True, unique=True, auto_created=True)
craw_id = models.IntegerField(unique=True)
host_ip = models.CharField(max_length=255, unique=True)
belong = models.CharField(max_length=255, unique=True)
main_dns = models.CharField(max_length=255, unique=True)
link_dns = models.TextField(null=True)
extra = models.TextField(null=True)
class OprLog(models.Model):
'''
操作日志
'''
id = models.AutoField(primary_key=True, unique=True, auto_created=True)
status = models.CharField(max_length=255, unique=True)
action = models.CharField(max_length=255, unique=True)
start_time = models.CharField(max_length=255, unique=True)
end_time = models.CharField(max_length=255, unique=True)
user_id = models.CharField(max_length=255, unique=True)
user_name = models.CharField(max_length=255, unique=True)
desc = models.CharField(max_length=255, unique=True)
extra = models.TextField(null=True)
然后执行如下命令,创建定义的表:
python manage.py makemigrations testweb
python manage.py sqlmigrate testweb 0001
python manage.py migrate