Skip to content

Latest commit

 

History

History
108 lines (77 loc) · 2.8 KB

File metadata and controls

108 lines (77 loc) · 2.8 KB

Akshare to PostgreSQL 数据存储解决方案

此项目实现了将akshare获取的股票数据存储到本地PostgreSQL数据库的功能,支持多种时间周期数据。

功能特性

  • 多时间周期支持:日线、周线、月线、年线、分钟线数据
  • 数据清洗:自动处理非数值字符,防止数据转换错误
  • 异常处理:包含API回退机制和错误处理
  • 数据库集成:与现有系统完全兼容

数据库结构

  • stock_info - 股票基本信息
  • stock_history - 历史数据(日/周/月/年线)
  • stock_minutely - 分钟数据(1min, 5min, 15min, 30min, 60min)
  • stock_intraday - 盘中数据

核心模块

backend/akshare_postgresql.py

主要功能模块,包含以下函数:

# 存储单个时间周期数据
store_daily_data(symbol, adjust="")        # 存储日线数据
store_weekly_data(symbol, adjust="")       # 存储周线数据
store_monthly_data(symbol, adjust="")      # 存储月线数据
store_yearly_data(symbol, adjust="")       # 存储年线数据
store_minute_data(symbol, period='1', adjust="")  # 存储分钟数据

# 存储所有时间周期数据
store_all_timeframe_data(symbol, adjust="")  # 一次性存储所有周期数据

# 检索数据
get_stored_data(symbol, period, adjust="")  # 获取已存储的数据

使用示例

import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'backend'))
from backend import database as db
import backend.akshare_postgresql as ak_pg

# 初始化数据库
ak_pg.init_database()

# 存储单个股票的所有时间周期数据
results = ak_pg.store_all_timeframe_data("00001", adjust="")

# 检索已存储的数据
data = ak_pg.get_stored_data("00001", "daily", "")

集成

  • API端点:已更新backend/main.py以支持所有时间周期数据访问
  • 数据同步:已更新backend/sync_data.py以使用新模块
  • 兼容性:与现有系统完全兼容

配置

确保PostgreSQL数据库配置正确:

# backend/database.py
DB_USER = "fin-ai"
DB_PASSWORD = "YOUR PASSWORD"
DB_HOST = "Your IP"
DB_PORT = "5432"  # Default PostgreSQL port
DB_NAME = "fin-ai"

运行数据同步

cd backend
python sync_data.py

API访问

启动后端服务:

cd backend
python main.py

API端点:

  • GET /api/stock_data?symbol=000001&period=daily&adjust=qfq
  • 支持的周期:daily, weekly, monthly, yearly, 1min, 5min, 等

故障排除

  1. 网络连接问题:确保可以访问akshare API
  2. 数据库连接:验证PostgreSQL配置
  3. 数据格式错误:模块已包含数据清理机制

注意事项

  • 使用时需确保akshare库已正确安装
  • 遵守API使用限制,避免频繁请求
  • 数据库需预先创建并配置正确的连接参数