- 添加MDF文件导出功能 - 集成阿里云OCR大模型识别 - 添加百度智能云AI照片评分 - 集成DeepSeek大模型创意文案生成 - 完善文档和配置管理 - 使用uv进行现代化依赖管理 - 添加完整的.gitignore配置
213 lines
5.8 KiB
Python
213 lines
5.8 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
MDF文件导出功能测试脚本
|
||
测试SQL Server数据库文件导出功能
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
import tempfile
|
||
from pathlib import Path
|
||
|
||
# 添加项目路径到Python路径
|
||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||
|
||
def check_sql_server_connection():
|
||
"""检查SQL Server连接"""
|
||
print("🔍 检查SQL Server连接...")
|
||
|
||
try:
|
||
import pyodbc
|
||
|
||
# 测试连接参数
|
||
test_servers = [
|
||
('localhost', 'MSSQLSERVER'),
|
||
('.', 'MSSQLSERVER'),
|
||
('localhost\\SQLEXPRESS', 'SQLEXPRESS')
|
||
]
|
||
|
||
connected = False
|
||
for server, instance in test_servers:
|
||
try:
|
||
if instance == 'MSSQLSERVER':
|
||
conn_str = f"DRIVER={{SQL Server}};SERVER={server};Trusted_Connection=yes;"
|
||
else:
|
||
conn_str = f"DRIVER={{SQL Server}};SERVER={server}\\{instance};Trusted_Connection=yes;"
|
||
|
||
conn = pyodbc.connect(conn_str, timeout=5)
|
||
cursor = conn.cursor()
|
||
cursor.execute("SELECT @@version")
|
||
version = cursor.fetchone()[0]
|
||
|
||
print(f"✅ 连接到 {server}\\{instance}")
|
||
print(f" SQL Server版本: {version.split('\\n')[0]}")
|
||
connected = True
|
||
conn.close()
|
||
break
|
||
|
||
except Exception as e:
|
||
print(f"❌ 无法连接到 {server}\\{instance}: {e}")
|
||
|
||
if not connected:
|
||
print("⚠️ 未找到可用的SQL Server实例")
|
||
print(" 请安装SQL Server或检查服务状态")
|
||
|
||
return connected
|
||
|
||
except ImportError:
|
||
print("❌ pyodbc未安装")
|
||
return False
|
||
|
||
def test_mdf_export_module():
|
||
"""测试MDF导出模块"""
|
||
print("\n🧪 测试MDF导出模块...")
|
||
|
||
try:
|
||
from utils.database_exporter import (
|
||
export_mssql_mdf_to_excel,
|
||
export_mssql_mdf_to_csv,
|
||
export_mssql_mdf_to_json
|
||
)
|
||
print("✅ MDF导出模块导入成功")
|
||
|
||
# 检查函数是否存在
|
||
functions = [
|
||
export_mssql_mdf_to_excel,
|
||
export_mssql_mdf_to_csv,
|
||
export_mssql_mdf_to_json
|
||
]
|
||
|
||
for func in functions:
|
||
print(f"✅ {func.__name__} 函数可用")
|
||
|
||
return True
|
||
|
||
except Exception as e:
|
||
print(f"❌ MDF导出模块测试失败: {e}")
|
||
return False
|
||
|
||
def create_sample_mdf_info():
|
||
"""创建示例MDF文件信息"""
|
||
print("\n📋 示例MDF文件信息:")
|
||
|
||
sample_info = """
|
||
💡 要测试MDF文件导出功能,您需要:
|
||
|
||
1. **现有的.mdf文件**
|
||
- 从现有SQL Server数据库分离的.mdf文件
|
||
- 或使用SQL Server创建测试数据库
|
||
|
||
2. **SQL Server实例**
|
||
- 本地安装的SQL Server
|
||
- 或可访问的远程SQL Server
|
||
|
||
3. **连接权限**
|
||
- 数据库读取权限
|
||
- 附加数据库权限
|
||
|
||
🔧 创建测试MDF文件的步骤:
|
||
|
||
1. 在SQL Server Management Studio中:
|
||
```sql
|
||
-- 创建测试数据库
|
||
CREATE DATABASE TestMDFExport;
|
||
GO
|
||
|
||
-- 创建测试表
|
||
USE TestMDFExport;
|
||
CREATE TABLE Students (
|
||
ID INT PRIMARY KEY,
|
||
Name NVARCHAR(50),
|
||
Age INT,
|
||
Major NVARCHAR(50)
|
||
);
|
||
|
||
-- 插入测试数据
|
||
INSERT INTO Students VALUES
|
||
(1, '张三', 20, '计算机科学'),
|
||
(2, '李四', 21, '数据科学'),
|
||
(3, '王五', 19, '人工智能');
|
||
```
|
||
|
||
2. 分离数据库获取.mdf文件:
|
||
```sql
|
||
-- 分离数据库
|
||
USE master;
|
||
GO
|
||
EXEC sp_detach_db 'TestMDFExport', 'true';
|
||
```
|
||
|
||
3. 数据库文件位置:
|
||
- 默认路径: C:\\Program Files\\Microsoft SQL Server\\...\\DATA\\
|
||
- 文件: TestMDFExport.mdf 和 TestMDFExport_log.ldf
|
||
"""
|
||
|
||
print(sample_info)
|
||
|
||
def check_odbc_drivers():
|
||
"""检查可用的ODBC驱动程序"""
|
||
print("\n🔌 检查ODBC驱动程序...")
|
||
|
||
try:
|
||
import pyodbc
|
||
|
||
drivers = pyodbc.drivers()
|
||
if drivers:
|
||
print("✅ 找到以下ODBC驱动程序:")
|
||
for driver in drivers:
|
||
print(f" - {driver}")
|
||
|
||
# 检查SQL Server相关驱动
|
||
sql_drivers = [d for d in drivers if 'SQL Server' in d]
|
||
if sql_drivers:
|
||
print("\n✅ 找到SQL Server ODBC驱动程序")
|
||
else:
|
||
print("\n⚠️ 未找到SQL Server ODBC驱动程序")
|
||
print(" 请安装ODBC Driver for SQL Server")
|
||
else:
|
||
print("❌ 未找到ODBC驱动程序")
|
||
|
||
except Exception as e:
|
||
print(f"❌ 检查ODBC驱动程序失败: {e}")
|
||
|
||
def main():
|
||
"""主测试函数"""
|
||
print("=" * 60)
|
||
print("MDF文件导出功能测试")
|
||
print("=" * 60)
|
||
|
||
# 检查ODBC驱动
|
||
check_odbc_drivers()
|
||
|
||
# 检查SQL Server连接
|
||
sql_connected = check_sql_server_connection()
|
||
|
||
# 测试MDF导出模块
|
||
module_ok = test_mdf_export_module()
|
||
|
||
# 显示示例信息
|
||
create_sample_mdf_info()
|
||
|
||
print("\n" + "=" * 60)
|
||
print("测试总结")
|
||
print("=" * 60)
|
||
|
||
if sql_connected and module_ok:
|
||
print("✅ MDF导出功能配置正确")
|
||
print("💡 您可以上传.mdf文件测试导出功能")
|
||
else:
|
||
print("⚠️ MDF导出功能需要额外配置")
|
||
|
||
if not sql_connected:
|
||
print(" - 需要安装或配置SQL Server")
|
||
if not module_ok:
|
||
print(" - 需要检查模块依赖")
|
||
|
||
print("\n🚀 下一步操作:")
|
||
print("1. 确保SQL Server服务运行")
|
||
print("2. 准备.mdf测试文件")
|
||
print("3. 访问应用测试导出功能")
|
||
print("4. 参考SQL_SERVER_SETUP.md获取详细配置说明")
|
||
|
||
if __name__ == "__main__":
|
||
main() |