生成封面更新SQL.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. 自动生成书籍封面更新SQL脚本
  5. 使用方法:
  6. 1. 先执行查询SQL获取所有书籍信息
  7. 2. 将书籍信息填入下面的books列表
  8. 3. 运行此脚本生成SQL文件
  9. """
  10. # 书籍信息列表
  11. # 格式:{"id": 书籍ID, "title": "书名", "cover_url": "封面URL"}
  12. books = [
  13. # 示例:
  14. # {"id": 1, "title": "活着", "cover_url": "https://img3.doubanio.com/view/subject/l/public/s1070959.jpg"},
  15. # {"id": 2, "title": "三体", "cover_url": "https://img3.doubanio.com/view/subject/l/public/s2768378.jpg"},
  16. # TODO: 请根据实际查询结果,添加你的书籍信息
  17. # 可以从数据库查询结果中复制,格式如下:
  18. # {"id": 1, "title": "书名1", "cover_url": "封面URL1"},
  19. # {"id": 2, "title": "书名2", "cover_url": "封面URL2"},
  20. ]
  21. def generate_sql():
  22. """生成SQL更新语句"""
  23. sql_statements = []
  24. sql_statements.append("-- 批量更新书籍封面SQL脚本")
  25. sql_statements.append("-- 生成时间: " + __import__('datetime').datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
  26. sql_statements.append("")
  27. sql_statements.append("-- 方法1: 逐个更新(推荐,可以单独执行)")
  28. sql_statements.append("")
  29. for book in books:
  30. sql = f"UPDATE `content` SET `cover_url` = '{book['cover_url']}' WHERE `content_id` = {book['id']};"
  31. sql_statements.append(sql)
  32. sql_statements.append(f"-- {book['title']}")
  33. sql_statements.append("")
  34. sql_statements.append("")
  35. sql_statements.append("-- 方法2: 使用CASE语句批量更新(适用于少量书籍)")
  36. sql_statements.append("UPDATE `content`")
  37. sql_statements.append("SET `cover_url` = CASE")
  38. for book in books:
  39. sql_statements.append(f" WHEN `content_id` = {book['id']} THEN '{book['cover_url']}'")
  40. sql_statements.append(" ELSE `cover_url`")
  41. sql_statements.append("END")
  42. if books:
  43. ids = [str(book['id']) for book in books]
  44. sql_statements.append(f"WHERE `content_id` IN ({', '.join(ids)});")
  45. sql_statements.append("")
  46. sql_statements.append("-- 验证更新结果")
  47. sql_statements.append("SELECT `content_id`, `title`, `cover_url` FROM `content` ORDER BY `content_id`;")
  48. return "\n".join(sql_statements)
  49. if __name__ == "__main__":
  50. if not books:
  51. print("=" * 60)
  52. print("提示:请先在脚本中填入书籍信息!")
  53. print("=" * 60)
  54. print("\n使用步骤:")
  55. print("1. 执行查询SQL获取所有书籍:")
  56. print(" SELECT content_id, title, author, cover_url FROM content ORDER BY content_id;")
  57. print("\n2. 为每本书找到封面URL(可以从豆瓣、网络搜索获取)")
  58. print("\n3. 将书籍信息添加到books列表,格式:")
  59. print(' {"id": 1, "title": "书名", "cover_url": "封面URL"}')
  60. print("\n4. 重新运行此脚本生成SQL文件")
  61. else:
  62. sql_content = generate_sql()
  63. # 保存到文件
  64. output_file = "批量更新封面_生成.sql"
  65. with open(output_file, 'w', encoding='utf-8') as f:
  66. f.write(sql_content)
  67. print("=" * 60)
  68. print(f"SQL脚本已生成:{output_file}")
  69. print("=" * 60)
  70. print("\n生成的SQL内容:")
  71. print("-" * 60)
  72. print(sql_content)
  73. print("-" * 60)
  74. print("\n请检查SQL语句后执行!")