Przeglądaj źródła

feat: 添加数据库迁移脚本,SpiderResult.link 字段从 String(500) 改为 Text

kinglee 6 dni temu
rodzic
commit
45f692adc3
3 zmienionych plików z 49 dodań i 1 usunięć
  1. 7 0
      CLAUDE.md
  2. 1 1
      app/models.py
  3. 41 0
      migrate_link_to_text.py

+ 7 - 0
CLAUDE.md

@@ -1,3 +1,10 @@
+# OpenWolf
+
+@.wolf/OPENWOLF.md
+
+This project uses OpenWolf for context management. Read and follow .wolf/OPENWOLF.md every session. Check .wolf/cerebrum.md before generating code. Check .wolf/anatomy.md before reading files.
+
+
 # CLAUDE.md
 
 This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

+ 1 - 1
app/models.py

@@ -69,7 +69,7 @@ class SpiderResult(db.Model):
     abstract = db.Column(db.Text)
     source = db.Column(db.String(200))
     cover = db.Column(db.String(500))
-    link = db.Column(db.String(500))
+    link = db.Column(db.Text)
     published_at = db.Column(db.String(50)) # Date extracted from source
     has_deep_collection = db.Column(db.Boolean, default=False)
     created_at = db.Column(db.DateTime, default=datetime.utcnow)

+ 41 - 0
migrate_link_to_text.py

@@ -0,0 +1,41 @@
+"""
+数据库迁移:将 spider_result.link 从 VARCHAR(500) 改为 TEXT
+解决百度搜索返回的长追踪链接(约 2200 字符)超出长度限制导致 500 错误
+"""
+import os
+from dotenv import load_dotenv
+
+load_dotenv(os.path.join(os.path.dirname(__file__), '.env'))
+
+from app import create_app, db
+
+
+def migrate():
+    app = create_app()
+    with app.app_context():
+        conn = db.engine.connect()
+
+        # 检查当前 link 列类型
+        result = conn.execute(
+            db.text(
+                "SELECT data_type, character_maximum_length "
+                "FROM information_schema.columns "
+                "WHERE table_name='spider_result' AND column_name='link'"
+            )
+        )
+        row = result.fetchone()
+        if not row:
+            print("spider_result.link column not found, skipping")
+        elif row[0] == 'text':
+            print("spider_result.link is already TEXT type")
+        else:
+            print(f"Current type: {row[0]}({row[1]})")
+            conn.execute(db.text("ALTER TABLE spider_result ALTER COLUMN link TYPE TEXT"))
+            print("Migrated spider_result.link to TEXT")
+
+        conn.commit()
+        print("Migration complete.")
+
+
+if __name__ == "__main__":
+    migrate()