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

Python操作SQLite出现NoneType无format属性及数据库锁的原因是什么?

问题原因分析

你遇到的三个问题分别由以下错误导致:

  • 首次调用şarkıları_göster()输出空列表:该方法的执行顺序逻辑错误,你先调用了self.cursor.fetchall()获取查询结果,再执行self.cursor.execute(sorgu,)触发查询。首次调用时还未执行SELECT语句,fetchall()只能拿到空列表,因此直接输出"Listenizde şarkı bulunmuyor"。正确顺序应该先执行查询,再获取结果。
  • 抛出AttributeError: 'NoneType' object has no attribute 'format'错误:Şarkı类的__str__方法存在两处语法错误:
    1. print()函数的返回值为None,你将format()方法写到了print()的括号外侧,相当于调用None.format(),自然触发属性不存在的报错
    2. __str__魔法方法要求返回字符串类型的结果,不能在方法内部直接调用print()输出内容,应该直接返回格式化后的字符串。
      错误的原代码:
    def __str__(self):
        print("Şarkı ismi: {}\nSanatçı: {}\nAlbüm: {}\nProdüksiyon şirketi:{}\nŞarkı süresi(saniye): {}").format(self.isim, self.sanatçı, self.albüm, self.prodüksiyon_şirketi, self.şarkı_süresi)
    
    修正后的代码:
    def __str__(self):
        return "Şarkı ismi: {}\nSanatçı: {}\nAlbüm: {}\nProdüksiyon şirketi:{}\nŞarkı süresi(saniye): {}".format(self.isim, self.sanatçı, self.albüm, self.prodüksiyon_şirketi, self.şarkı_süresi)
    
  • 数据库锁定:有两处原因共同导致:
    1. 你的代码全程没有主动调用bağlantıyı_kes()方法关闭数据库连接,且该方法本身存在语法错误:self.bağlantı.close后面缺少调用括号,即使调用该方法也无法真正关闭连接释放锁
    2. 前面的__str__方法抛出未处理的异常,导致程序提前终止,数据库连接没有被正常释放,sqlite的文件级锁持续持有,就会触发数据库锁定的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:54:03