Mysql ile veri güncellemesi yapmak

Merhabalar,
Profil adındaki toplevel’de, veritabanından profil güncellemesi yapmak istiyorum. Fakat AttributeError: ‘tuple’ object has no attribute ‘encode’ hatası alıyorum. isim değişkeni, uye olurken kullanıcıdan aldığım mail adresi. Zaten fonksiyon içerisinde de mail olarak tanımladım. Fakat nerede hata yaptığımı anlamadım.

def guncelle(profil, veritab,isim,sifreentry, adentry, soyadentry):
    mail=isim.get()
    mycursor5 = veritab.cursor()
    sorgu = ("UPDATE musteriler SET (sifre = %s,ad = %s, soyad= %s) WHERE mail =%s")
    deger = (sifreentry.get(), adentry.get(), soyadentry.get(),isim.get())
    mycursor5.execute(sorgu, deger)
    veritab.commit()
    if sifreentry.get() == sifreentry.get():
        sorgu = ("UPDATE musteriler SET (sifre = %s) WHERE mail =%s")
        deger = (sifreentry.get(),isim.get())
        mycursor5.execute(sorgu, deger)
        veritab.commit()
        uyari_mesaji = messagebox.showinfo("Bilgilendirme", "Güncelleme Başarılı!",parent=profil)    
    elif adentry.get() == adentry.get():
        sorgu = ("UPDATE musteriler SET (ad = %s) WHERE mail =%s")
        deger = (adentry.get(),isim.get())
        mycursor5.execute(sorgu, deger)
        veritab.commit()
        uyari_mesaji = messagebox.showinfo("Bilgilendirme", "Güncelleme Başarılı!",parent=profil)    
    elif soyadentry.get() ==soyadentry.get():
        sorgu = ("UPDATE musteriler SET (soyad = %s) WHERE mail =%s")
        deger = (soyadentry.get(),isim.get())
        mycursor5.execute(sorgu, deger)
        veritab.commit()
        uyari_mesaji = messagebox.showinfo("Bilgilendirme", "Güncelleme Başarılı!",parent=profil)    
    else:
        pass  ```

SET'ten sonra gelen kısım parantez içine alınmıyor diye biliyorum. Yani en azından sqlite3’te alınmıyor.

Böyle bir şey yaptım. Bu sefer Güncelleme başarılı yazıyor. Ama veritabanında yaptığı işlem ad soyad şifre kısmını silmek oluyor. girdiğim entryi yazmıyor

    def sonuc():
        mycursor2=veritab.cursor()
        sorgu=("UPDATE musteriler SET sifre = %s, ad = %s, soyad= %s WHERE mail = %s", (sifreentry,adentry,soyadentry,isim.get(),))
        mycursor2.execute(*sorgu)
        veritab.commit()```

Problemi uc satirlik bir ornege indirgeyebiliyor musun?

"

with veritab.cursor() as cur:
    cur.execute("INSERT INTO tablo (ad, mail) VALUES ('3', '5')")
    cur.execute("UPDATE tablo SET ad = 'x' WHERE ad = '5'")
    cur.execute("SELECT * FROM tablo")
    print(cur.fetchall())

3, x gelmesini bekliyorum ama 3, 5 geliyor.
"

gibi.

Cunku su anda ne calisan bir kod var elimizde, ne database’deki bilgiler, ne de programa verdigin input.

Demet verisindeki entry widgetlerinin get metodunu kullanmanız gerekmiyor muydu? Sanki entry'de yazan yazı yerine entry widgetlerini ekliyormuşsunuz gibi geldi bana.

Yok, entryyi direkt koymadım. üst tarafta entrynin get metodunu değişkene atamıştım, bir tek isim.get’i atamamıştım bir değişkene

Hocam veritabanına üye olurken alıyorum şifre ad soyadı maili. Uygulama üzerinden update ederken etmiyor. Mysql veri tabanı