I am running this code to create a table and print its components.
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()
Also this is the module I am using:
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()
When I run the code, first it says "Listenizde şarkı blunmuyor" and if I add another "şarkı_listesi.şarkıları_göster()" function it says "AttributeError: 'NoneType' object has no attribute 'format'" then locks the database. Why?
CodePudding user response:
format()
is a method on the str
class. You've chained it to the output of print
, which is always None
. Move the call to format()
inside the print
statement to properly chain it to your string:
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))
CodePudding user response:
Change the print
in the __str__
method to a return
. The str method will format the output, and the print
in şarkıları_göster
will print it.
Aside: It says "Listenizde şarkı blunmuyor"` the first time because the fetchall() is before the execute(). I'm not sure if that was part of the "Why?"