磁力搜索引擎网站搭建1:数据保存

上一篇:磁力搜索引擎网站搭建0:说明

数据怎么获取取决于数据怎么保存,以什么格式保存,所以先说保存。一旦数据开始获取想要修改就很麻烦了,所有要先规划好。

首先数据库分为两类(当然,肯定在在同一个数据库中保存)简要信息(显示在搜索结果中的信息)和详细信息(点击搜索结果中的某一个)。磁力链接本质上是十六进制字符串,每类表都有16个。热词表用于显示搜索关键词热度。

MySQL连接池

连接池代码基于python3 实现mysql数据库连接池

系统提供的默认版本的DButils是不行的,需要指定版本。

测试数据表为:

1
2
3
4
5
6
7
8
create table `test` (
`id` int(11) not null auto_increment,
`cone` int(6) not null,
`ctwo` int(6) not null,
`cthree` int(6) not null,
`cfour` int(6) not null,
primary key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入1000条数据耗时为:

1
========= 数据插入,共耗时:3.864's =========

据说后续部署时这个会很有用。

数据库相关

在通过搜索引擎进行搜索时,只需要显示磁力链接的部分信息就可以了。

和这个类似

brief

字段包括:文件名、热度、文件大小、创建时间、文件格式

而显示详细信息时

info

字段包括:文件名、热度、磁力链接、文件大小、创建时间、文件数量、文件列表

文件列表这个字段,它的数量未知。我的处理是独立一个表。

表创建:

  • 简要信息一个表,详细信息中保存除简要信息的字段
  • 还有一种方法是详细信息保存所有字段,简要信息从详细信息中提取此部分信息,不知道两者有何差别,待网站搭建完成后再测试。

现在网站属于测试阶段,所以就先只保存在详细信息中,然后以索引的方式生成简要信息。

详细信息表

1
2
3
4
5
6
7
8
9
10
11
12
create table if not exists `index_a` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hash` varchar(40) NOT NULL,
`name` varchar(1000) NOT NULL,
`hot` int(12) NOT NULL,
`create_time` int(12) NOT NULL,
`file_size` bigint(50) NOT NULL,
`file_num` int(8) NOT NULL,
`file_type` varchar(10) NOT NULL,
`update_time` int(12) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

这样的表有16个。

还需要一个文件列表表

1
2
3
4
5
6
create table if not exists `list_0` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(1000) NOT NULL,
`file_size` bigint(50) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

至此数据保存的格式确定了,下一步是获取数据并保存到数据库中

下一篇:磁力搜索引擎网站搭建2:数据获取