使用数据库直接管理Philomena贴图板

Philomena是一个优秀的Booru式图像管理Web服务平台。但是,部分管理功能无法直接在Web页面中完成。此时,可以使用数据库操作完成这些任务。

此处假设Philomena运行于Dev模式下。

登录数据库

Philomena默认使用宿主于Docker容器内的PostgreSQL数据库承载业务数据。可以使用docker命令切入数据库容器:

docker exec -it CONTAINER_ID /bin/bash

其中CONTAINER_ID为Docker容器的Container ID,格式形如“1fa5a1c22fbc”,可以使用docker ps命令获取名字(NAMES字段)类似philomena-postgres-1或映像(IMAGE字段)类似postgres:17.4-alpine的容器的ID。

进入容器终端后,通过psql调用PostgreSQL控制台,使用默认用户名postgres登录:

psql -U postgres

列出数据库:

\l

连接到philomena_dev数据库:

\c philomena_dev

列出数据表:

\dt

核准新用户

Philomena的Web管理无法直接核准新注册用户的注册(需注册用户通过电子邮件确认),但是可以通过数据库操作实现。用户信息储存于users表中。

列出所有用户的ID信息:

SELECT id,email,confirmed_at FROM users;

confirmed_at字段为空的用户处于未确认(未核准)状态。

直接核准特定用户,此处以核准id字段为5的用户为例:

UPDATE users SET confirmed_at='2025-04-23 07:28:05' WHERE id=5;

删除用户

此处以删除id大于等于2的所有用户为例:

DELETE FROM users WHERE id>=2;

清除所有没有关联图像的标签

该操作将删除所有关联图像个数为0的标签:

DELETE FROM tags WHERE images_count=0;

清除特定图像下所有的标签

此操作完成后,需要在Philomena的Web页面中对涉及的标签进行重新索引(计数)。

此处以清除image_id1的图像下所有的标签为例:

DELETE FROM image_taggings WHERE image_id=1;

清除特定图像下特定的标签

此操作完成后,需要在Philomena的Web页面中对涉及的标签进行重新索引(计数):

此处以清除image_id1的图像下所有tag_id大于40小于70的标签为例:

DELETE FROM image_taggings WHERE image_id=1 AND tag_id>40 AND tag_id<70;

修改特定图像下特定的标签

此操作完成后,需要在Philomena的Web页面中对涉及的标签进行重新索引(计数):

此处以清除image_id1的图像下tag_id1的标签改为tag_id4的标签为例:

UPDATE image_taggings SET tag_id=4 WHERE image_id=1 AND tag_id=1;

清除特定图片下所有的评论

清除评论需要同时更新commentscomments_count等2个表。

此处以清除image_id1的图像下所有的评论为例:

DELETE FROM comments WHERE id>=1;
UPDATE images SET comments_count=0 WHERE id=1;

删除特定讨论串

此处以删除id1的讨论串为例:

DELETE FROM topics WHERE id=1;

更新论坛板块统计数目:

UPDATE forums SET topic_count=0, post_count=0 WHERE id=1;

参考资料

https://github.com/derpibooru/philomena/issues/269

https://github.com/philomena-dev/philomena/issues/198

https://blog.csdn.net/stt12345678/article/details/135772865

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License