接入数据库

This commit is contained in:
crypto_predictor committed 2026-02-04 18:35:10 +08:00
1 parent 1bd9d25f60
commit 59fcb11ffa
9 files changed
+1560 -103

No files matched your search

+14 -8
View File
@@ -1,10 +1,17 @@
"""生成测试数据以便在无法连接Binance时使用"""
import sys
import os
from pathlib import Path
# 添加项目根目录 to path
sys.path.append(str(Path(__file__).resolve().parent.parent))
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
from pathlib import Path
from data.database import DatabaseManager
def generate_sample_data(
symbol: str = 'BTC',
@@ -76,14 +83,13 @@ def generate_sample_data(
df = pd.DataFrame(data)
# 保存到缓存
cache_dir = Path('./data/cache')
cache_dir.mkdir(parents=True, exist_ok=True)
# 保存到数据库
# 注意:我们这里假设DatabaseManager的默认路径在脚本运行时是相对于CWD的
# 如果从根目录运行,./data/cache/market_data.db 是正确的
db_manager = DatabaseManager()
db_manager.save_ohlcv(df, symbol, timeframe)
cache_file = cache_dir / f"{symbol}_{timeframe}_1y_now.csv"
df.to_csv(cache_file, index=False)
print(f"✓ 已生成 {len(df)} 行模拟数据并保存到:{cache_file}")
print(f"✓ 已生成 {len(df)} 行模拟数据并保存到数据库")
return df
+67
View File
@@ -0,0 +1,67 @@
"""Migrate existing CSV cache data to SQLite database."""
import sys
import os
from pathlib import Path
import re
# Add project root to path
sys.path.append(str(Path(__file__).resolve().parent.parent))
import pandas as pd
from data.database import DatabaseManager
def migrate():
cache_dir = Path("./data/cache")
db_path = cache_dir / "market_data.db"
print(f"Initializing database at {db_path}...")
db_manager = DatabaseManager(str(db_path))
# Find all CSV files
csv_files = list(cache_dir.glob("*.csv"))
print(f"Found {len(csv_files)} CSV files to migrate.")
success_count = 0
fail_count = 0
for csv_file in csv_files:
try:
filename = csv_file.name
print(f"Processing {filename}...")
# Parse filename
parts = filename.split('_')
if len(parts) < 2:
print(f" ⚠ Skipping {filename}: Invalid naming format")
continue
symbol = parts[0]
timeframe = parts[1]
# Validate symbol and timeframe (basic check)
if timeframe not in ['1h', '15m']:
# Relaxed check, just warning
print(f" ℹ Note: Unfamiliar timeframe {timeframe} in {filename}")
# Read CSV
df = pd.read_csv(csv_file)
if 'timestamp' not in df.columns:
print(f" ⚠ Skipping {filename}: No timestamp column")
continue
# Save to DB
db_manager.save_ohlcv(df, symbol, timeframe)
print(f" ✓ Imported {len(df)} records for {symbol} {timeframe}")
success_count += 1
except Exception as e:
print(f" ❌ Error processing {csv_file.name}: {e}")
fail_count += 1
print("\nMigration complete!")
print(f"Successfully migrated: {success_count} files")
print(f"Failed: {fail_count} files")
if __name__ == "__main__":
migrate()