reanalyze db_path schema
This commit is contained in:
@@ -86,9 +86,9 @@ def CreateDBDeviceTable(db_path='../src/db_ntfs_info.db', table_name='db_device'
|
||||
|
||||
def CreateDBNodeTable(db_path='../src/db_ntfs_info.db', table_name='db_node'):
|
||||
"""
|
||||
在指定路径下创建 SQLite 数据库,并在其中创建节点信息表。
|
||||
创建 NewDBNode 表,用于存储文件的具体属性和物理分布信息。
|
||||
|
||||
:param db_path: str, 数据库文件的路径
|
||||
:param db_path: str, 数据库文件路径
|
||||
:param table_name: str, 要创建的表名
|
||||
:return: None
|
||||
"""
|
||||
@@ -100,28 +100,18 @@ def CreateDBNodeTable(db_path='../src/db_ntfs_info.db', table_name='db_node'):
|
||||
|
||||
# 连接到SQLite数据库(如果文件不存在会自动创建)
|
||||
conn = sqlite3.connect(db_path)
|
||||
|
||||
# 创建一个游标对象
|
||||
conn.execute("PRAGMA foreign_keys = ON;") # 开启外键支持
|
||||
cursor = conn.cursor()
|
||||
|
||||
# 动态构建创建表的SQL语句
|
||||
create_table_sql = f"""
|
||||
CREATE TABLE IF NOT EXISTS {table_name} (
|
||||
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
PathID INTEGER,
|
||||
ParentID INTEGER,
|
||||
NameHash TEXT,
|
||||
PathHash TEXT,
|
||||
PathID INTEGER NOT NULL,
|
||||
ExtendNameID INTEGER,
|
||||
DirLayer INTEGER,
|
||||
GroupID INTEGER,
|
||||
UserID INTEGER,
|
||||
FileCreateTime TEXT,
|
||||
FileModifyTime TEXT,
|
||||
FileAccessTime TEXT,
|
||||
FileAuthTime TEXT,
|
||||
FileSize INTEGER,
|
||||
FileMode INTEGER,
|
||||
FileHash TEXT,
|
||||
ExtentCount INTEGER,
|
||||
extent1_DeviceID INTEGER,
|
||||
@@ -137,21 +127,17 @@ def CreateDBNodeTable(db_path='../src/db_ntfs_info.db', table_name='db_node'):
|
||||
extent4_Location INTEGER,
|
||||
extent4_Length INTEGER,
|
||||
|
||||
-- 外键约束(可选)
|
||||
FOREIGN KEY(PathID) REFERENCES path_table(ID),
|
||||
FOREIGN KEY(ExtendNameID) REFERENCES extname_table(ID),
|
||||
FOREIGN KEY(GroupID) REFERENCES groups(ID),
|
||||
FOREIGN KEY(UserID) REFERENCES users(ID)
|
||||
-- 外键约束
|
||||
FOREIGN KEY(PathID) REFERENCES NewDBPath(ID),
|
||||
FOREIGN KEY(ExtendNameID) REFERENCES db_extend(ID),
|
||||
FOREIGN KEY(GroupID) REFERENCES db_group(ID),
|
||||
FOREIGN KEY(UserID) REFERENCES db_user(ID)
|
||||
);
|
||||
"""
|
||||
|
||||
# 执行SQL语句
|
||||
cursor.execute(create_table_sql)
|
||||
|
||||
# 提交更改
|
||||
conn.commit()
|
||||
|
||||
# 关闭连接
|
||||
conn.close()
|
||||
|
||||
print(f"表 [{table_name}] 已在数据库 [{db_path}] 中创建成功")
|
||||
@@ -280,12 +266,11 @@ def CreateDBExtendSnippetTable(db_path='../src/db_ntfs_info.db', table_name='db_
|
||||
print(f"表 [{table_name}] 已在数据库 [{db_path}] 中创建成功")
|
||||
|
||||
|
||||
def CreateDBPathTable(db_path='../src/db_path.db', table_name='db_path'):
|
||||
def CreateDBPathTable(db_path='../src/db_ntfs_info.db', table_name='db_path'):
|
||||
"""
|
||||
在指定路径下创建 SQLite 数据库,并在其中创建路径信息表,
|
||||
包含 DeviceID 字段,用于标记文件所属设备(磁盘)。
|
||||
创建 NewDBPath 表,用于存储文件/目录的路径信息。
|
||||
|
||||
:param db_path: str, 数据库文件的路径
|
||||
:param db_path: str, 数据库文件路径
|
||||
:param table_name: str, 要创建的表名
|
||||
:return: None
|
||||
"""
|
||||
@@ -295,39 +280,42 @@ def CreateDBPathTable(db_path='../src/db_path.db', table_name='db_path'):
|
||||
if directory and not os.path.exists(directory):
|
||||
os.makedirs(directory)
|
||||
|
||||
# 连接到SQLite数据库(如果文件不存在会自动创建)
|
||||
# 连接到SQLite数据库(如果不存在会自动创建)
|
||||
conn = sqlite3.connect(db_path)
|
||||
conn.execute("PRAGMA foreign_keys = ON;") # 开启外键支持
|
||||
cursor = conn.cursor()
|
||||
|
||||
# 动态构建创建表的SQL语句(包含 DeviceID 外键)
|
||||
# 动态构建创建表的SQL语句
|
||||
create_table_sql = f"""
|
||||
CREATE TABLE IF NOT EXISTS {table_name} (
|
||||
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
-- DeviceID TEXT NOT NULL,
|
||||
Path TEXT NOT NULL,
|
||||
Name TEXT NOT NULL,
|
||||
DirLayer INTEGER NOT NULL,
|
||||
PathHash TEXT UNIQUE NOT NULL,
|
||||
IsDir INTEGER NOT NULL CHECK(IsDir IN (0, 1)),
|
||||
ParentID INTEGER,
|
||||
ContentSize INTEGER,
|
||||
FileCreateTime TEXT,
|
||||
FileModifyTime TEXT,
|
||||
FileAccessTime TEXT,
|
||||
FileAuthTime TEXT,
|
||||
FileMode TEXT,
|
||||
|
||||
-- 外键约束
|
||||
-- FOREIGN KEY(DeviceID) REFERENCES db_device(ID),
|
||||
-- 外键约束(可选)
|
||||
FOREIGN KEY(ParentID) REFERENCES {table_name}(ID)
|
||||
);
|
||||
"""
|
||||
|
||||
# 执行SQL语句
|
||||
cursor.execute(create_table_sql)
|
||||
|
||||
# 提交更改
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
print(f"表 [{table_name}] 已在数据库 [{db_path}] 中创建成功")
|
||||
|
||||
|
||||
def CreateDBExtendNameTable(db_path='../src/db_extend_name.db', table_name='db_extend_name'):
|
||||
def CreateDBExtendNameTable(db_path='../src/db_ntfs_info.db', table_name='db_extend_name'):
|
||||
"""
|
||||
在指定路径下创建 SQLite 数据库,并在其中创建扩展名表。
|
||||
|
||||
|
Reference in New Issue
Block a user