Commit b56f30e3 authored by mitshel's avatar mitshel
Browse files

Оптимизированы процедуры заполнения БД (модуль sopdsdb.py)

Изменена структура БД.
Создан скрипт подготовки стантартного каталога жанров.
Создан скрипт создания (инициализации) базы данных SOPDS. Теперь БД Нужно создавать скриптом ./db/db_create.sh
sopds-scan.py сохраняет информацию о жанрах книг.
parent ba2b3d7b
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
Simple OPDS Catalog
Простой OPDS Каталог
Author: Dmitry V.Shelepnev
Версия 0.05
Версия 0.06

1. Установка:
Для работы скрипта sopds-scan.py необходимо установить следующие зависимости:
@@ -14,7 +14,7 @@ yum install mysql-connector-python3

3. Инициализация базы данных
Для работы каталога необходимо создать(пересоздать) базу данных sopds при помощи скрипта:
mysql mysql < ./db/dbcrea.sql
./db/db_create.sh

4. Сканирование каталога с книгами
Для сканирования каталога с электронными книгами запустить скрипт sopds-scan.py
@@ -39,9 +39,8 @@ mysql mysql < ./db/dbcrea.sql

7. Обновление версий
- Поскольку при переходе от версии к версии возможно изменение структуры БД необходимо пересоздать ее следующей командой
  mysql mysql < ./db/dbcrea.sql
  ./db/db_create.sh
- После пересоздания БД и, как следствие уничтожении сыллок из БД на извлеченные обложки стоит удалить со всем содержимым
  и заново создать папку covers
  папку covers
  rm -rf covers
  mkdir covers

db/db_create.sh

0 → 100755
+10 −0
Original line number Diff line number Diff line
#!/bin/bash

script_dbcrea='dbcrea.sql'
script_genre='genre.sql'
run_path=`dirname $0`
script_dbcrea=$run_path'/dbcrea.sql'
script_genres=$run_path'/genres.sql'

mysql mysql < $script_dbcrea
mysql sopds < $script_genres
+0 −2
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@ cat_id INT not null,
cat_type INT not null DEFAULT 0,
registerdate TIMESTAMP not null DEFAULT CURRENT_TIMESTAMP,
favorite INT not null DEFAULT 0,
genre VARCHAR(32),
lang  VARCHAR(16),
title VARCHAR(256),
cover VARCHAR(32),
@@ -23,7 +22,6 @@ cover_type VARCHAR(32),
doublicat INT not null DEFAULT 0,
PRIMARY KEY(book_id),
KEY(filename),
KEY(genre),
KEY(title));

create table catalogs (
+14 −1
Original line number Diff line number Diff line
#!/bin/bash

echo "use sopds;"
echo "drop table if exists genres;"
echo "drop table if exists bgenres;"
echo "commit;"
echo
echo "create table genres("
echo "genre_id INT not null AUTO_INCREMENT," 
echo "genre VARCHAR(32),"
echo "section VARCHAR(32),"
echo "subsection VARCHAR(32),"
echo "PRIMARY KEY(genre));"
echo "PRIMARY KEY(genre_id),"
echo "KEY(genre));"
echo "commit;"
echo
echo "create table bgenres("
echo "genre_id INT not NULL,"
echo "book_id INT not NULL,"
echo "PRIMARY KEY(book_id,genre_id));"
echo "commit;"
echo
cat genres.txt | grep -v '#' | awk -F'-' '{gsub(/^ +| +$/,"",$1)} {gsub(/^ +| +$/,"",$2)} {gsub(/^ +| +$/,"",$3)} {print "insert into genres(genre,section,subsection) values(\""$1"\",\""$2"\",\""$3"\");"}'
+14 −1
Original line number Diff line number Diff line
use sopds;
drop table if exists genres;
drop table if exists bgenres;
commit;

create table genres(
genre_id INT not null AUTO_INCREMENT,
genre VARCHAR(32),
section VARCHAR(32),
subsection VARCHAR(32),
PRIMARY KEY(genre));
PRIMARY KEY(genre_id),
KEY(genre));
commit;

create table bgenres(
genre_id INT not NULL,
book_id INT not NULL,
PRIMARY KEY(book_id,genre_id));
commit;

insert into genres(genre,section,subsection) values("sf_history","Альтернативная история","Фантастика");
Loading