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

import sqlite3

def find_and_delete_larger_rows(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}:")
                # 打印所有字段
                for key in record.keys():
                    value = record[key]
                    if value is None:
                        value = "NULL"
                    print(f"  {key}: {value}")
                
            # 选择第一个记录（假设只有一个匹配）
            target_record = records[0]
            # 直接获取 rowid
            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"\n将删除 {count} 条 rowid > {target_rowid} 的记录")
            
            # 确认删除
            confirm = input("是否确认删除？(y/n): ")
            if confirm.lower() == 'y':
                # 删除记录
                delete_query = "DELETE FROM ads WHERE rowid > ?"
                conn.execute(delete_query, (target_rowid,))
                conn.commit()
                print(f"成功删除 {count} 条记录")
            else:
                print("取消删除操作")
            
        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(target_name)
