|
@@ -47,20 +47,19 @@ def initialize_files_database():
|
|
|
connection.close()
|
|
connection.close()
|
|
|
print("MySQL 服务器连接已关闭")
|
|
print("MySQL 服务器连接已关闭")
|
|
|
|
|
|
|
|
-# 初始化表
|
|
|
|
|
def initialize_files_table(table_name = "category"):
|
|
def initialize_files_table(table_name = "category"):
|
|
|
try:
|
|
try:
|
|
|
connection = mysql.connector.connect(**DB_CONFIG)
|
|
connection = mysql.connector.connect(**DB_CONFIG)
|
|
|
if connection.is_connected():
|
|
if connection.is_connected():
|
|
|
cursor = connection.cursor()
|
|
cursor = connection.cursor()
|
|
|
|
|
|
|
|
- # 动态创建表
|
|
|
|
|
|
|
+ # 动态创建表,指定字符集为 utf8mb4
|
|
|
create_table_query = f'''
|
|
create_table_query = f'''
|
|
|
CREATE TABLE IF NOT EXISTS `{table_name}` (
|
|
CREATE TABLE IF NOT EXISTS `{table_name}` (
|
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
- name VARCHAR(255),
|
|
|
|
|
- url VARCHAR(255)
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ name VARCHAR(255) UNIQUE,
|
|
|
|
|
+ url VARCHAR(255) UNIQUE
|
|
|
|
|
+ ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
|
|
|
'''
|
|
'''
|
|
|
|
|
|
|
|
cursor.execute(create_table_query)
|
|
cursor.execute(create_table_query)
|
|
@@ -73,6 +72,7 @@ def initialize_files_table(table_name = "category"):
|
|
|
connection.close()
|
|
connection.close()
|
|
|
print("MySQL 连接已关闭")
|
|
print("MySQL 连接已关闭")
|
|
|
|
|
|
|
|
|
|
+
|
|
|
# 插入数据
|
|
# 插入数据
|
|
|
def insert_url(name, url, table_name="category"):
|
|
def insert_url(name, url, table_name="category"):
|
|
|
try:
|
|
try:
|
|
@@ -87,19 +87,43 @@ def insert_url(name, url, table_name="category"):
|
|
|
insert_query = f"INSERT INTO `{table_name}` (name, url) VALUES (%s, %s)"
|
|
insert_query = f"INSERT INTO `{table_name}` (name, url) VALUES (%s, %s)"
|
|
|
cursor.execute(insert_query, (name, url))
|
|
cursor.execute(insert_query, (name, url))
|
|
|
connection.commit()
|
|
connection.commit()
|
|
|
- print(f"插入文件数据成功:({name}, {url}) 到表 {table_name}")
|
|
|
|
|
|
|
+
|
|
|
|
|
+ # 判断插入是否成功
|
|
|
|
|
+ if cursor.rowcount > 0:
|
|
|
|
|
+ print(f"插入文件数据成功:({name}, {url}) 到表 {table_name}")
|
|
|
|
|
+ file_result = {"status": "success"}
|
|
|
|
|
+ else:
|
|
|
|
|
+ print(f"插入文件数据失败:({name}, {url}) 到表 {table_name}")
|
|
|
|
|
+ file_result = {"status": "failed"}
|
|
|
|
|
|
|
|
# 确保 category 表存在
|
|
# 确保 category 表存在
|
|
|
initialize_files_table("category")
|
|
initialize_files_table("category")
|
|
|
|
|
|
|
|
- # 插入表名到 category 表
|
|
|
|
|
- insert_query = "INSERT IGNORE INTO `category` (name) VALUES (%s)"
|
|
|
|
|
- cursor.execute(insert_query, (table_name,))
|
|
|
|
|
- connection.commit()
|
|
|
|
|
- print(f"插入表名成功:({table_name}) 到表 category")
|
|
|
|
|
|
|
+ # 查询是否已经存在该表名
|
|
|
|
|
+ select_query = "SELECT * FROM `category` WHERE `name` = %s"
|
|
|
|
|
+ cursor.execute(select_query, (table_name,))
|
|
|
|
|
+ existing_category = cursor.fetchone()
|
|
|
|
|
|
|
|
- except Error as err:
|
|
|
|
|
|
|
+ if existing_category:
|
|
|
|
|
+ print(f"表名 {table_name} 已经存在,不插入!")
|
|
|
|
|
+ category_result = {"status": "exists"}
|
|
|
|
|
+ else:
|
|
|
|
|
+ # 执行插入 category
|
|
|
|
|
+ insert_query = "INSERT INTO `category` (name) VALUES (%s)"
|
|
|
|
|
+ cursor.execute(insert_query, (table_name,))
|
|
|
|
|
+ connection.commit()
|
|
|
|
|
+ print(f"插入表名成功:({table_name}) 到表 category")
|
|
|
|
|
+ category_result = {"status": "success"}
|
|
|
|
|
+
|
|
|
|
|
+ return {"status": "success", "file_result": file_result, "category_result": category_result}
|
|
|
|
|
+
|
|
|
|
|
+ except mysql.connector.Error as err:
|
|
|
|
|
+ if err.errno == 1062: # Duplicate entry error
|
|
|
|
|
+ print(f"文件 {name} 已存在,不重复插入。")
|
|
|
|
|
+ return {"status": "duplicate", "message": f"文件 {name} 已存在"}
|
|
|
print(f"插入数据时发生错误:{err}")
|
|
print(f"插入数据时发生错误:{err}")
|
|
|
|
|
+ return {"status": "error", "message": str(err)}
|
|
|
|
|
+
|
|
|
finally:
|
|
finally:
|
|
|
if connection.is_connected():
|
|
if connection.is_connected():
|
|
|
cursor.close()
|
|
cursor.close()
|
|
@@ -107,6 +131,7 @@ def insert_url(name, url, table_name="category"):
|
|
|
print("MySQL 连接已关闭")
|
|
print("MySQL 连接已关闭")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
# 查询数据
|
|
# 查询数据
|
|
|
def fetch_data(table_name):
|
|
def fetch_data(table_name):
|
|
|
try:
|
|
try:
|