166 lines
6.1 KiB
Python
Executable File
166 lines
6.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
检查赵云将军本地数据中的 510300.SSE 标的
|
|
"""
|
|
|
|
import sqlite3
|
|
import pandas as pd
|
|
import sys
|
|
import os
|
|
|
|
def find_vnpy_database():
|
|
"""查找vn.py数据库文件"""
|
|
db_paths = [
|
|
'/Users/chufeng/.openclaw/workspace-zhaoyun/sanguo_quant_live/zhaoyun-data/data/running_data/database_test.db',
|
|
'/Users/chufeng/.openclaw/workspace-zhaoyun/zhaoyun-data/data/database_test.db',
|
|
'/Users/chufeng/.openclaw/memory/zhaoyun-data.sqlite',
|
|
]
|
|
|
|
existing_dbs = []
|
|
for path in db_paths:
|
|
if os.path.exists(path):
|
|
existing_dbs.append(path)
|
|
print(f"✅ 找到数据库: {path}")
|
|
else:
|
|
print(f"❌ 不存在: {path}")
|
|
|
|
return existing_dbs
|
|
|
|
def check_symbol_in_db(db_path, symbol):
|
|
"""检查数据库中是否存在指定标的"""
|
|
print(f"\n🔍 检查数据库 {db_path} 中的 {symbol}...")
|
|
|
|
try:
|
|
conn = sqlite3.connect(db_path)
|
|
|
|
# 列出所有表
|
|
cursor = conn.cursor()
|
|
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
|
|
tables = cursor.fetchall()
|
|
print(f"📊 数据库中的表: {[t[0] for t in tables]}")
|
|
|
|
# 检查可能的表名
|
|
for table_name in ['dbbardata', 'bar_data', 'daily_data', '1d', 'daily']:
|
|
try:
|
|
# 检查表是否存在
|
|
cursor.execute(f"SELECT EXISTS (SELECT 1 FROM sqlite_master WHERE type='table' AND name='{table_name}');")
|
|
exists = cursor.fetchone()[0]
|
|
|
|
if exists:
|
|
print(f"\n🔍 检查表 {table_name}...")
|
|
|
|
# 获取总行数
|
|
cursor.execute(f"SELECT COUNT(*) FROM {table_name};")
|
|
total_rows = cursor.fetchone()[0]
|
|
print(f" 总行数: {total_rows}")
|
|
|
|
# 检查symbol是否存在
|
|
cursor.execute(f"SELECT DISTINCT symbol FROM {table_name} WHERE symbol = ?", (symbol,))
|
|
result = cursor.fetchone()
|
|
|
|
if result:
|
|
print(f" ✅ 找到标的: {symbol}")
|
|
|
|
# 获取该标的数据量
|
|
cursor.execute(f"SELECT COUNT(*) FROM {table_name} WHERE symbol = ?", (symbol,))
|
|
count = cursor.fetchone()[0]
|
|
print(f" 数据行数: {count}")
|
|
|
|
# 获取时间范围
|
|
cursor.execute(f"SELECT MIN(datetime), MAX(datetime) FROM {table_name} WHERE symbol = ?", (symbol,))
|
|
min_dt, max_dt = cursor.fetchone()
|
|
print(f" 时间范围: {min_dt} -> {max_dt}")
|
|
|
|
# 获取前5行数据
|
|
cursor.execute(f"SELECT * FROM {table_name} WHERE symbol = ? ORDER BY datetime LIMIT 5", (symbol,))
|
|
rows = cursor.fetchall()
|
|
|
|
# 获取列名
|
|
cursor.execute(f"PRAGMA table_info({table_name})")
|
|
columns = [col[1] for col in cursor.fetchall()]
|
|
print(f" 列名: {columns}")
|
|
|
|
print(f" 前5行数据:")
|
|
for row in rows:
|
|
print(f" {row}")
|
|
|
|
conn.close()
|
|
return True, {
|
|
'table': table_name,
|
|
'count': count,
|
|
'min_dt': min_dt,
|
|
'max_dt': max_dt,
|
|
'columns': columns
|
|
}
|
|
else:
|
|
print(f" ❌ 未找到标的 {symbol}")
|
|
|
|
# 列出可用标的供参考
|
|
cursor.execute(f"SELECT DISTINCT symbol FROM {table_name} LIMIT 10")
|
|
symbols = cursor.fetchall()
|
|
if symbols:
|
|
print(f" 可用标的 (前10个): {[s[0] for s in symbols]}")
|
|
|
|
except Exception as e:
|
|
print(f" ⚠️ 检查表出错: {e}")
|
|
continue
|
|
|
|
conn.close()
|
|
return False, None
|
|
|
|
except Exception as e:
|
|
print(f"❌ 连接数据库出错: {e}")
|
|
return False, None
|
|
|
|
def main():
|
|
"""主函数"""
|
|
print("🚀 检查赵云将军本地数据中的 510300.SSE 标的")
|
|
print("="*60)
|
|
|
|
symbol_to_check = "510300.SSE"
|
|
print(f"目标标的: {symbol_to_check}")
|
|
|
|
# 查找数据库
|
|
dbs = find_vnpy_database()
|
|
|
|
if not dbs:
|
|
print("❌ 未找到任何数据库文件")
|
|
print("\n📋 可能的原因:")
|
|
print("1. 赵云将军的数据还未转换到vn.py格式")
|
|
print("2. 数据路径配置错误")
|
|
print("3. 510300.SSE 数据还未下载")
|
|
return False
|
|
|
|
# 检查每个数据库
|
|
found = False
|
|
result = None
|
|
|
|
for db in dbs:
|
|
found_db, result_db = check_symbol_in_db(db, symbol_to_check)
|
|
if found_db:
|
|
found = True
|
|
result = result_db
|
|
break
|
|
|
|
# 总结
|
|
print("\n" + "="*60)
|
|
print("检查结果:")
|
|
|
|
if found:
|
|
print(f"✅ 找到 {symbol_to_check} 数据")
|
|
print(f" 数据行数: {result['count']}")
|
|
print(f" 时间范围: {result['min_dt']} -> {result['max_dt']}")
|
|
print(f" 数据列: {result['columns']}")
|
|
print(f" 表名: {result['table']}")
|
|
else:
|
|
print(f"❌ 未找到 {symbol_to_check} 数据")
|
|
print("\n📋 需要检查:")
|
|
print("1. 赵云将军是否已下载 510300.SSE 数据")
|
|
print("2. 数据是否已转换为vn.py格式")
|
|
print("3. 数据路径配置是否正确")
|
|
|
|
print("="*60)
|
|
return found
|
|
|
|
if __name__ == "__main__":
|
|
main() |