You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SQLAlchemy与Python操作SQLite时遭遇超时错误求助

问题:SQLAlchemy读取SQLite数据库频繁超时,寻求高效解决方案

我使用Python结合SQLAlchemy读取SQLite数据库时频繁遇到超时错误,后续计划将该数据库配合仪表盘使用,这个问题亟待解决。该数据库包含1000多张表且还在持续增长。

出现超时的代码示例

表空值检查代码

empty_tables = []
for table in rs_tables:
    df = pd.read_sql_table(table,RSengine.connect())
    if df.empty:
        empty_tables.append(table)

数据库引擎定义:
RSengine = sqlalchemy.create_engine('sqlite:///RS.db')

首次触发超时的大规模计算循环

initialErrors = {}
initialRS = {}
# 分批次拆分表列表
chunks = [tables[i:i + 10] for i in range(0, len(tables), 10)]
for chunk in chunks:
    for ticker in tqdm(chunk):
        try:
            stock = pd.read_sql_table(ticker, stockengine.connect(), index_col='Date') # 超时大概率发生在此处
            # 截取最近2年的交易数据(约504条)
            stock1 = stock.iloc[-504:]
            RSframe = relative_strength(df1=stock1,df2=INDEX1,windows=[21,63])
            initialRS[ticker] = RSframe
            # RSframe.to_sql(ticker, RSengine, if_exists='replace',index=False)
        except Exception as e:
            initialErrors[ticker] = e

注:relative_strength函数单次执行平均耗时约7秒,错误明确出现在表读取环节。

已尝试的无效解决方案

  • 将大规模表列表拆分为每10张表一个小批次处理
  • 在循环迭代末尾添加sleep,但效率极低
  • 尝试将表预读取到内存后再计算,仍出现超时
  • 采用Stack Overflow上推荐的SQLAlchemy超时设置方案,问题依旧

核心疑问

  1. 是否存在更高效的读取方式可以避免超时?
  2. SQLite是否适合这种包含上千张表且持续增长、还要配合仪表盘使用的场景?

内容的提问来源于stack exchange,提问作者Nishad V Seeraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:26:13