# 作者:北小菜 """轻量 SQLite 列升级(无 Django migrations 时使用)""" import logging logger = logging.getLogger("app.schema") def _table_columns(cursor, table): if table not in {"av_biz_algorithm"}: raise ValueError("table is not allowed for schema upgrade") cursor.execute('PRAGMA table_info("av_biz_algorithm")') return {row[1] for row in cursor.fetchall()} def ensure_biz_algorithm_line_count_columns(): from django.db import connection table = "av_biz_algorithm" adds = { "forward_count_threshold": "ALTER TABLE av_biz_algorithm ADD COLUMN forward_count_threshold INTEGER NOT NULL DEFAULT 0", "reverse_count_threshold": "ALTER TABLE av_biz_algorithm ADD COLUMN reverse_count_threshold INTEGER NOT NULL DEFAULT 0", "detector_model_id": "ALTER TABLE av_biz_algorithm ADD COLUMN detector_model_id INTEGER NULL", } with connection.cursor() as cur: existing = _table_columns(cur, table) for col, sql in adds.items(): if col in existing: continue cur.execute(sql) logger.info("schema upgrade: %s", sql)