我运行这段代码来创建一个表并打印它的组件
import Proje_2
şarkı_listesi = Proje_2.Şarkı_listesi()
isim = input("İsim:")
sanatçı = input("Sanatçı:")
albüm = input("Albüm:")
prodüksiyon_şirketi = input("Prodüksiyon şirketi:")
şarkı_süresi = int(input("Şarkı süresi(sn):"))
yeni_şarkı = Proje_2.Şarkı(isim, sanatçı, albüm, prodüksiyon_şirketi, şarkı_süresi)
print("Şarkı ekleniyor")
şarkı_listesi.şarkı_ekle(yeni_şarkı,)
print("Şarkı eklendi")
şarkı_listesi.şarkıları_göster()
这也是我正在使用的模块:
import sqlite3
class Şarkı():
def __init__(self,isim,sanatçı,albüm,prodüksiyon_şirketi,şarkı_süresi):
self.isim = isim
self.sanatçı = sanatçı
self.albüm = albüm
self.prodüksiyon_şirketi = prodüksiyon_şirketi
self.şarkı_süresi = şarkı_süresi
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)
class Şarkı_listesi():
def __init__(self):
self.bağlantı_oluştur()
def bağlantı_oluştur(self):
self.bağlantı = sqlite3.connect("şarkı_listesi.db")
self.cursor = self.bağlantı.cursor()
sorgu = "Create Table if not exists şarkı_listesi (isim TEXT,sanatçı TEXT,albüm TEXT,prodüksiyon_şirketi TEXT,şarkı_süresi INT)"
self.cursor.execute(sorgu)
self.bağlantı.commit()
def bağlantıyı_kes(self):
self.bağlantı.close
def şarkıları_göster(self):
sorgu = "Select * from şarkı_listesi"
şarkı_listesi = self.cursor.fetchall()
self.cursor.execute(sorgu,)
if (len(şarkı_listesi) == 0):
print("Listenizde şarkı bulunmuyor")
else:
for i in şarkı_listesi:
şarkı = Şarkı(i[0], i[1], i[2], i[3], i[4])
print(şarkı)
def şarkı_ekle(self,şarkı):
sorgu = "Insert into şarkı_listesi Values(?,?,?,?,?)"
self.cursor.execute(sorgu, (şarkı.isim,şarkı.sanatçı,şarkı.albüm,şarkı.prodüksiyon_şirketi,şarkı.şarkı_süresi))
self.bağlantı.commit()
当我运行代码时,首先它会显示“listenizedeşarkıblunmuyor”,如果我添加另一个“arkıu listesi.arkılarıgöster()”函数,它会显示“AttributeError:‘NoneType’object没有属性‘format’”,然后锁定数据库。为什么?
将
__str__
方法中的print
更改为return
。str方法将格式化输出,并且şarkıları_göster
中的print
将打印输出旁白:它说“listenizedeşarkıblunmuyor”`这是第一次,因为fetchall()在execute()之前。我不确定这是否是“为什么”的一部分
^{} 是
str
类上的一个方法。您已经将它链接到了print
的输出,即始终None
。将对format()
的调用移动到print
语句中,以将其正确链接到字符串:相关问题 更多 >
编程相关推荐