| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- 自动生成书籍封面更新SQL脚本
- 使用方法:
- 1. 先执行查询SQL获取所有书籍信息
- 2. 将书籍信息填入下面的books列表
- 3. 运行此脚本生成SQL文件
- """
- # 书籍信息列表
- # 格式:{"id": 书籍ID, "title": "书名", "cover_url": "封面URL"}
- books = [
- # 示例:
- # {"id": 1, "title": "活着", "cover_url": "https://img3.doubanio.com/view/subject/l/public/s1070959.jpg"},
- # {"id": 2, "title": "三体", "cover_url": "https://img3.doubanio.com/view/subject/l/public/s2768378.jpg"},
-
- # TODO: 请根据实际查询结果,添加你的书籍信息
- # 可以从数据库查询结果中复制,格式如下:
- # {"id": 1, "title": "书名1", "cover_url": "封面URL1"},
- # {"id": 2, "title": "书名2", "cover_url": "封面URL2"},
- ]
- def generate_sql():
- """生成SQL更新语句"""
- sql_statements = []
- sql_statements.append("-- 批量更新书籍封面SQL脚本")
- sql_statements.append("-- 生成时间: " + __import__('datetime').datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
- sql_statements.append("")
- sql_statements.append("-- 方法1: 逐个更新(推荐,可以单独执行)")
- sql_statements.append("")
-
- for book in books:
- sql = f"UPDATE `content` SET `cover_url` = '{book['cover_url']}' WHERE `content_id` = {book['id']};"
- sql_statements.append(sql)
- sql_statements.append(f"-- {book['title']}")
- sql_statements.append("")
-
- sql_statements.append("")
- sql_statements.append("-- 方法2: 使用CASE语句批量更新(适用于少量书籍)")
- sql_statements.append("UPDATE `content`")
- sql_statements.append("SET `cover_url` = CASE")
-
- for book in books:
- sql_statements.append(f" WHEN `content_id` = {book['id']} THEN '{book['cover_url']}'")
-
- sql_statements.append(" ELSE `cover_url`")
- sql_statements.append("END")
-
- if books:
- ids = [str(book['id']) for book in books]
- sql_statements.append(f"WHERE `content_id` IN ({', '.join(ids)});")
-
- sql_statements.append("")
- sql_statements.append("-- 验证更新结果")
- sql_statements.append("SELECT `content_id`, `title`, `cover_url` FROM `content` ORDER BY `content_id`;")
-
- return "\n".join(sql_statements)
- if __name__ == "__main__":
- if not books:
- print("=" * 60)
- print("提示:请先在脚本中填入书籍信息!")
- print("=" * 60)
- print("\n使用步骤:")
- print("1. 执行查询SQL获取所有书籍:")
- print(" SELECT content_id, title, author, cover_url FROM content ORDER BY content_id;")
- print("\n2. 为每本书找到封面URL(可以从豆瓣、网络搜索获取)")
- print("\n3. 将书籍信息添加到books列表,格式:")
- print(' {"id": 1, "title": "书名", "cover_url": "封面URL"}')
- print("\n4. 重新运行此脚本生成SQL文件")
- else:
- sql_content = generate_sql()
-
- # 保存到文件
- output_file = "批量更新封面_生成.sql"
- with open(output_file, 'w', encoding='utf-8') as f:
- f.write(sql_content)
-
- print("=" * 60)
- print(f"SQL脚本已生成:{output_file}")
- print("=" * 60)
- print("\n生成的SQL内容:")
- print("-" * 60)
- print(sql_content)
- print("-" * 60)
- print("\n请检查SQL语句后执行!")
|