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

Firebase实时数据库删除异常:Treeview已删但数据库未删除

问题排查与解决方案

核心问题定位

结合你提供的打印URL(ttps://fila2-6bd6b-default-rtdb.firebaseio.com/-NNh38XBrRen17bGWHga.json),最直接的问题是URL拼写错误——开头缺少http的h,导致请求根本没发送到Firebase服务器,所谓的200状态码可能是其他代理或错误服务器的无效响应,这也是数据库数据未删除的关键原因。

具体修复步骤

1. 修正Base URL的拼写

检查self.base_url的定义,确保它以https://开头,正确格式示例:

self.base_url = "https://fila2-6bd6b-default-rtdb.firebaseio.com/"

拼接后的URL才会指向有效的Firebase节点地址。

2. 验证Treeview中存储的ID正确性

删除前打印获取到的id值,确认它和Firebase数据库中的节点ID(如-NMtZNTISnGhT-rdibeb)完全一致,无多余空格、换行或特殊字符。可在代码中添加:

print("待删除节点ID:", id)

如果ID不匹配,说明加载数据到Treeview时,没有正确将Firebase节点ID存入item的text属性。插入Treeview的代码需符合如下逻辑:

# 示例:从Firebase拉取数据后插入Treeview
data = requests.get(self.base_url + ".json").json()
for node_id, info in data.items():
    # 将Firebase节点ID作为item的text参数传入
    self.tree.insert('', 'end', text=node_id, values=(info['motorista'], info['plate'], info['produto'], info['transp']))

3. 检查请求的实际响应内容

不要只打印响应对象,要打印响应的JSON内容,确认是否来自Firebase。修改代码:

response = requests.delete(url)
print("响应内容:", response.json())

Firebase删除成功时会返回null;若URL错误,返回内容会和Firebase的响应格式不符。

4. 改用Firebase Python SDK替代requests

手动拼接URL容易出错,建议用第三方SDK(如pyrebase4)操作数据库,更稳定可靠。示例代码:

# 先安装依赖:pip install pyrebase4
import pyrebase

config = {
  "apiKey": "你的API密钥",
  "authDomain": "你的Auth域名",
  "databaseURL": "https://fila2-6bd6b-default-rtdb.firebaseio.com/",
  "storageBucket": "你的存储桶地址"
}

firebase = pyrebase.initialize_app(config)
db = firebase.database()

# 改写删除方法
def delete(self):
    selected_item = self.tree.selection()
    if selected_item:
        node_id = self.tree.item(selected_item, "text")
        try:
            db.child(node_id).remove()
            self.tree.delete(selected_item)
            messagebox.showinfo("Info", "Linha deletada com sucesso!")
        except Exception as e:
            messagebox.showerror("Erro", f"Não foi possível deletar a linha: {str(e)}")
    else:
        messagebox.showerror("Erro", "Nenhum item selecionado para deletar!")

额外验证

修改后,删除操作前先在Firebase控制台确认目标节点存在;执行删除后刷新控制台,检查节点是否被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:50:29