files.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. # -*- coding: utf-8 -*-
  2. from unicodedata import category
  3. import mysql.connector
  4. from mysql.connector import Error
  5. # 配置数据库连接
  6. DB_CONFIG = {
  7. 'host': '60.204.139.57',
  8. 'user': 'root',
  9. 'password': '1',
  10. 'port': 6003,
  11. 'database': 'files' # 替换为数据库名称
  12. }
  13. # 初始化数据库
  14. def initialize_files_database():
  15. try:
  16. # 连接 MySQL 服务器(不指定数据库)
  17. connection = mysql.connector.connect(
  18. host=DB_CONFIG['host'],
  19. user=DB_CONFIG['user'],
  20. password=DB_CONFIG['password'],
  21. port=DB_CONFIG['port']
  22. )
  23. if connection.is_connected():
  24. print("成功连接到 MySQL 服务器")
  25. cursor = connection.cursor()
  26. # 检查数据库是否存在
  27. cursor.execute(f"SHOW DATABASES LIKE '{DB_CONFIG['database']}';")
  28. result = cursor.fetchone()
  29. if result:
  30. print(f"数据库 {DB_CONFIG['database']} 已存在。")
  31. else:
  32. print(f"数据库 {DB_CONFIG['database']} 不存在,正在创建...")
  33. cursor.execute(f"CREATE DATABASE {DB_CONFIG['database']};")
  34. print(f"数据库 {DB_CONFIG['database']} 创建成功。")
  35. except Error as err:
  36. print(f"连接 MySQL 时发生错误:{err}")
  37. finally:
  38. if connection.is_connected():
  39. cursor.close()
  40. connection.close()
  41. print("MySQL 服务器连接已关闭")
  42. def initialize_files_table(table_name = "category"):
  43. try:
  44. connection = mysql.connector.connect(**DB_CONFIG)
  45. if connection.is_connected():
  46. cursor = connection.cursor()
  47. # 动态创建表,指定字符集为 utf8mb4
  48. create_table_query = f'''
  49. CREATE TABLE IF NOT EXISTS `{table_name}` (
  50. id INT AUTO_INCREMENT PRIMARY KEY,
  51. name VARCHAR(255) UNIQUE,
  52. url VARCHAR(255) UNIQUE
  53. ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
  54. '''
  55. cursor.execute(create_table_query)
  56. print(f"表 {table_name} 初始化成功。")
  57. except Error as err:
  58. print(f"初始化表时发生错误:{err}")
  59. finally:
  60. if connection.is_connected():
  61. cursor.close()
  62. connection.close()
  63. print("MySQL 连接已关闭")
  64. # 插入数据
  65. def insert_url(name, url, table_name="category"):
  66. try:
  67. connection = mysql.connector.connect(**DB_CONFIG)
  68. if connection.is_connected():
  69. cursor = connection.cursor()
  70. # 确保目标文件表存在
  71. initialize_files_table(table_name)
  72. # 插入文件数据到目标表
  73. insert_query = f"INSERT INTO `{table_name}` (name, url) VALUES (%s, %s)"
  74. cursor.execute(insert_query, (name, url))
  75. connection.commit()
  76. # 判断插入是否成功
  77. if cursor.rowcount > 0:
  78. print(f"插入文件数据成功:({name}, {url}) 到表 {table_name}")
  79. file_result = {"status": "success"}
  80. else:
  81. print(f"插入文件数据失败:({name}, {url}) 到表 {table_name}")
  82. file_result = {"status": "failed"}
  83. # 确保 category 表存在
  84. initialize_files_table("category")
  85. # 查询是否已经存在该表名
  86. select_query = "SELECT * FROM `category` WHERE `name` = %s"
  87. cursor.execute(select_query, (table_name,))
  88. existing_category = cursor.fetchone()
  89. if existing_category:
  90. print(f"表名 {table_name} 已经存在,不插入!")
  91. category_result = {"status": "exists"}
  92. else:
  93. # 执行插入 category
  94. insert_query = "INSERT INTO `category` (name) VALUES (%s)"
  95. cursor.execute(insert_query, (table_name,))
  96. connection.commit()
  97. print(f"插入表名成功:({table_name}) 到表 category")
  98. category_result = {"status": "success"}
  99. return {"status": "success", "file_result": file_result, "category_result": category_result}
  100. except mysql.connector.Error as err:
  101. if err.errno == 1062: # Duplicate entry error
  102. print(f"文件 {name} 已存在,不重复插入。")
  103. return {"status": "duplicate", "message": f"文件 {name} 已存在"}
  104. print(f"插入数据时发生错误:{err}")
  105. return {"status": "error", "message": str(err)}
  106. finally:
  107. if connection.is_connected():
  108. cursor.close()
  109. connection.close()
  110. print("MySQL 连接已关闭")
  111. # 查询数据
  112. def fetch_data(table_name):
  113. try:
  114. connection = mysql.connector.connect(**DB_CONFIG)
  115. if connection.is_connected():
  116. cursor = connection.cursor()
  117. # 查询数据
  118. query = f"SELECT * FROM `{table_name}`"
  119. cursor.execute(query)
  120. rows = cursor.fetchall()
  121. print(f"--- 表 {table_name} 的查询结果 ---")
  122. for row in rows:
  123. print(row)
  124. return rows
  125. except Error as err:
  126. print(f"查询数据时发生错误:{err}")
  127. finally:
  128. if connection.is_connected():
  129. cursor.close()
  130. connection.close()
  131. print("MySQL 连接已关闭")
  132. # 主函数
  133. if __name__ == "__main__":
  134. # 初始化数据库
  135. initialize_files_database()
  136. # 示例:插入和查询数据
  137. table_name = "filePath"
  138. insert_url("example_file.mp4", table_name)
  139. fetch_data(table_name)