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

连接SQLite3数据库报错:OperationalError: no such table: MMM

解决SQLite3 "no such table: MMM" 错误的排查步骤

这种情况我碰到过好多次,别慌,咱们一步步来定位问题:

1. 先确认Python连接的是正确的数据库文件

sqlite3.connect('database.db') 默认会在当前工作目录下找这个文件,而这个目录可能和你存放.py文件的目录不一样!

先加几行代码打印当前工作目录,验证一下:

import os
import sqlite3

print("当前工作目录:", os.getcwd())  # 看看Python现在在哪找文件
db = sqlite3.connect('database.db')

如果打印出来的目录和你的database.db实际所在目录不一致,就改用绝对路径连接数据库,比如:

# macOS/Linux示例
db = sqlite3.connect('/Users/your_username/your_project_folder/database.db')

# Windows示例(注意双反斜杠)
db = sqlite3.connect('C:\\Users\\your_username\\your_project_folder\\database.db')

2. 验证数据库里确实存在MMM表

有时候你以为打开的是正确的数据库,其实可能搞错了文件。可以用以下代码直接查询数据库里的所有表:

import sqlite3

db = sqlite3.connect('database.db')
c = db.cursor()
c.execute("SELECT name FROM sqlite_master WHERE type='table';")
print("数据库中的所有表:", c.fetchall())
c.close()
db.close()

如果输出里没有MMM,那说明你连接的数据库文件不对,赶紧找到正确的那个文件再试。

另外要注意大小写问题:SQLite在Linux/macOS下是区分表名大小写的,如果你的实际表名是mmm(小写),但代码里写的是MMM(大写),就会报错。Windows下则不区分。

3. 检查拼写和特殊字符

确认代码里的表名MMM和数据库里的表名完全一致,没有多打、少打字符,也没有空格或者特殊符号(比如是不是叫MMM_或者 MMM?)。

最后再试一次修正后的代码

比如用绝对路径连接,同时先检查表存在的完整代码:

import os
import sqlite3

# 替换成你的数据库绝对路径
db_path = '/Users/your_username/your_project/database.db'
db = sqlite3.connect(db_path)
c = db.cursor()

# 先确认表存在
c.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='MMM';")
table_exists = c.fetchone()
if not table_exists:
    print("错误:数据库中不存在MMM表,请检查文件路径或表名!")
else:
    c.execute('SELECT * FROM MMM WHERE Open >200 AND Close <201')
    for row in c.fetchall():
        print(row)

c.close()
db.close()

内容的提问来源于stack exchange,提问作者vicky113

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:07:07