#!/usr/bin/env python3 """ 创建files表的脚本 """ from sqlalchemy import create_engine, text import os # 数据库配置 DATABASE_URL = os.getenv("DATABASE_URL", "mysql+pymysql://mytest_db:mytest_db@101.126.85.76:3306/mytest_db") def create_files_table(): """创建files表""" engine = create_engine(DATABASE_URL) # 创建files表的SQL语句 create_table_sql = """ CREATE TABLE IF NOT EXISTS files ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, filename VARCHAR(255) NOT NULL, original_filename VARCHAR(255) NOT NULL, file_path VARCHAR(500) NOT NULL, file_size BIGINT NOT NULL, mime_type VARCHAR(100) NOT NULL, file_hash VARCHAR(64) NOT NULL, is_public BOOLEAN DEFAULT FALSE, download_count BIGINT DEFAULT 0, description TEXT, tags TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, last_accessed_at TIMESTAMP NULL, INDEX idx_user_id (user_id), INDEX idx_filename (filename), INDEX idx_file_hash (file_hash), INDEX idx_created_at (created_at), FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; """ try: with engine.connect() as connection: # 执行创建表语句 connection.execute(text(create_table_sql)) connection.commit() print("files表创建成功") # 检查表是否创建成功 result = connection.execute(text("SHOW TABLES LIKE 'files'")) if result.fetchone(): print("files表验证成功") else: print("files表验证失败") except Exception as e: print(f"创建files表失败: {e}") raise if __name__ == "__main__": create_files_table()