ben python ve sqlite3 kullanarak bir login ekranı yapıyorum.ama şöyle bir sorun var.Yeni kullanıcı oluşturma ve giriş yapma kısmını tamamladım ama kullanıcı silme işleminde takıldım yardım ederseniz sevinirim.öncelikle bir admin şifresi belirledim kullanıcı sil butonuna bastığında ondan admin şifresi isteniyor eğer şifreyi doğru girerse sqlite veri tabanımdaki user sütunundaki verileri pencere içine yanındada 1’den başlayıp numaralar yazmasını istiyorum yanındada bir entry ile ondan numarayı alıp sqlite3 deki rowid fonksiyonuyla o kullanıcının kaydolduğu satırı silmek istiyorum.
def deletek():
Ap = str(admin_E.get())
if Ap == admin_password:
imlec.execute("SELECT user FROM base")
f = imlec.fetchall()
for i, j in enumerate(f, 1):
x = "{}){} ".format(i, " ".join(j))
print("{}".format(x))
else:
mesaj1 = Label(text="Yanlış şifre lütfen\ntekrar deneyiniz.")
mesaj1.grid(row=4, column=1)
def delete():
global admin1,admin_E,bt
buton.destroy()
buton1.destroy()
buton2.destroy()
admin1 = Label(text="Yönetici girişi yapınız :")
admin1.grid(row=0, column=0)
admin_E = Entry()
admin_E.grid(row=0, column=1)
bt = Button(text="Giriş",command=deletek)
bt.grid(row=3,column=1)
pencere = Tk()
pencere.geometry("290x180")
buton = Button(pencere,
text="Yeni Kullanıcı",command=new)
buton1 = Button(pencere,
text="Giriş",command=login)
buton2 = Button(pencere,
text="Kullanıcı Silme",command=delete)
buton.pack()
buton1.pack()
buton2.pack()
pencere.mainloop()
hocam sqlite veri tabanımdan verileri çektiğim zaman liste halinde geliyor f değişkenine atayıp ekrana yazdırdığımda biraz değişik o yüzden enumerate ile kullanıcıların önüne 1’den başlayıp sayı atıyorum ve join fonksiyonu ile biraz düzenleyip ekrana yazdırdığımda string haline geliyor.
imlec.execute("SELECT user FROM base")
f = imlec.fetchall()
for k, j in enumerate(f, 1):
x = "{}){} ".format(i, " ".join(j))"
print(f,type(f))
[('ahmet',), ('can',), ('can',)] <class 'list'>
[('ahmet',), ('can',), ('can',)] <class 'list'>
[('ahmet',), ('can',), ('can',)] <class 'list'>
print(x,type(x))
1)('ahmet',) <class 'str'>
2)('can',) <class 'str'>
3)('can',) <class 'str'>
yani ben veri tabanımdan listemi çekip f değişkenine atıyorum. f değişkenini pencereye yanında 1’den başlayacak şekilde numaralandırıp yazdırmak istiyorum ve yanındada bir entry olsun istiyorum.kalanı ben hallederim.
Hocam şöyle bir sorun var ben veri tabanımdan kullanıcılarımı çekip f değişkenine atadığımda ve f değişkenini yazdırdığımda şöyle bir çıktı veriyor.
#veritabanımdan çektiğim kullanıcılar
imlec.execute("SELECT user FROM base")
f = imlec.fetchall()
print(f)
#normal bir liste
f1 = ["ahmet","can"]
print(f1)
hocam teşekkürler oldu ama her kullanıcıyı numaralandırmak istiyorum. onu nasıl yaparım örneğin; ahmet kullanıcısının başında 1 can kullanıcısının başında 2 olsun ve bu her kullanıcı için olsun yani veri tabanımda 10 kullanıcı olduğunda 10’a kadar numaralandırılsın her kullanıcıyı.