#!/usr/bin/env python3
"""
delete_larger_rows_auto.py - 自动查找特定记录并删除比它 rowid 大的记录
"""

import sqlite3

def find_and_delete_larger_rows_auto(target_name):
    db_path = r'\\ll\D\xtrssvjj\db\dpd.db'
    
    try:
        print(f"正在连接数据库: {db_path}")
        conn = sqlite3.connect(db_path, timeout=60.0)
        conn.row_factory = sqlite3.Row
        
        print(f"正在查找 ads 表中包含 '{target_name}' 的记录...")
        
        # 查找包含目标字符串的记录，显式选择 rowid
        query = "SELECT rowid, * FROM ads WHERE name LIKE ?"
        cursor = conn.execute(query, (f"%{target_name}%",))
        
        records = cursor.fetchall()
        
        if records:
            print(f"找到 {len(records)} 条记录:")
            print("=" * 100)
            
            for i, record in enumerate(records):
                print(f"\n记录 {i+1}:")
                print(f"  rowid: {record['rowid']}")
                print(f"  name: {record['name']}")
                
            # 选择第一个记录（假设只有一个匹配）
            target_record = records[0]
            target_rowid = target_record['rowid']
            
            print(f"\n选择记录: rowid={target_rowid}")
            
            # 统计需要删除的记录数
            count_query = "SELECT COUNT(*) FROM ads WHERE rowid > ?"
            count_cursor = conn.execute(count_query, (target_rowid,))
            count = count_cursor.fetchone()[0]
            print(f"将删除 {count} 条 rowid > {target_rowid} 的记录")
            
            # 执行删除操作
            delete_query = "DELETE FROM ads WHERE rowid > ?"
            conn.execute(delete_query, (target_rowid,))
            conn.commit()
            print(f"成功删除 {count} 条记录")
            
            # 验证删除结果
            count_query = "SELECT COUNT(*) FROM ads WHERE rowid > ?"
            count_cursor = conn.execute(count_query, (target_rowid,))
            remaining = count_cursor.fetchone()[0]
            print(f"删除后剩余 {remaining} 条 rowid > {target_rowid} 的记录")
            
        else:
            print(f"未找到包含 '{target_name}' 的记录")
        
        conn.close()
        print("数据库连接已关闭")
        
    except Exception as e:
        print(f"错误: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    target_name = "国产摩托车是中国制造史上最被低估的励志样本之一_微信派__微信视频号创造营"
    find_and_delete_larger_rows_auto(target_name)
