init database expect db_node
This commit is contained in:
68
ntfs_utils/db_extend_name.py
Normal file
68
ntfs_utils/db_extend_name.py
Normal file
@@ -0,0 +1,68 @@
|
||||
import sqlite3
|
||||
|
||||
|
||||
def InsertExtensionsToDB(extensions, db_path='../src/db_ntfs_info.db', table_name='db_extend_name'):
|
||||
"""
|
||||
将扩展名列表插入到数据库中,自动忽略重复项。
|
||||
|
||||
参数:
|
||||
extensions: list of str,要插入的扩展名列表(如 ["txt", "jpg"])
|
||||
db_path: str,SQLite 数据库路径
|
||||
table_name: str,扩展名表名
|
||||
|
||||
返回:
|
||||
int: 成功插入的新记录数量
|
||||
"""
|
||||
if not isinstance(extensions, list):
|
||||
raise TypeError("extensions 必须是一个列表")
|
||||
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
try:
|
||||
# 创建表(如果不存在)
|
||||
create_table_sql = f"""
|
||||
CREATE TABLE IF NOT EXISTS {table_name} (
|
||||
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
ExtendName TEXT UNIQUE NOT NULL
|
||||
);
|
||||
"""
|
||||
cursor.execute(create_table_sql)
|
||||
|
||||
# 插入语句(忽略重复)
|
||||
insert_sql = f"""
|
||||
INSERT OR IGNORE INTO {table_name} (ExtendName)
|
||||
VALUES (?)
|
||||
"""
|
||||
|
||||
# 构造插入数据格式
|
||||
data_to_insert = [(ext.lower(),) for ext in extensions if ext.strip()]
|
||||
|
||||
# 批量插入
|
||||
cursor.executemany(insert_sql, data_to_insert)
|
||||
conn.commit()
|
||||
|
||||
inserted_count = cursor.rowcount
|
||||
if inserted_count > 0:
|
||||
print(f"✅ 成功插入 {inserted_count} 个扩展名")
|
||||
else:
|
||||
print("⚠️ 没有新的扩展名被插入(可能已存在)")
|
||||
|
||||
return inserted_count
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 插入失败: {e}")
|
||||
conn.rollback()
|
||||
return 0
|
||||
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
# 示例调用
|
||||
if __name__ == "__main__":
|
||||
# 常见的文件扩展名列表(可选)
|
||||
common_extensions = ["txt", "log", "csv", "xls", "xlsx", "doc", "docx"]
|
||||
|
||||
count = InsertExtensionsToDB(common_extensions)
|
||||
print(f"共插入 {count} 个新扩展名。")
|
Reference in New Issue
Block a user