Bismillahirrahmanirrahim
Şu kodda yapmak istediklerim:
if len(self.output) >= 1 and self.output[0][2] == price:
db.database.execute(f"UPDATE products SET piece={self.output[0][3] + piece} WHERE id={self.output[0][0]}")
db.database.commit()
Yukarıdaki self.output içerisinde bulunan [(2, 'Karga Burnu', '100', 4550), (3, 'Karga Burnu', '120', 850)]
listesini teker teker burada sorgulamak istiyorum. for döngüsü kullanmadan yapmam mümkün mü? Kaç yolu vardır?
Fonksiyonun Amacı: Veritabanında aynı adda ürün ve fiyat varsa miktara ekleme yapacak, fiyat farklı ya da hiç yoksa veritabanına yeni ürün olarak kayıt edecek. (Önerilere açıktır.)
def __init__(self):
self.name = None
Yukarıdaki kısmı add fonksiyonundan self.name = name
değiştirip, info
fonksiyonundan (değişmiş hâline) ulaşmak istiyorum. Nasıl yapabilirim?
- Bu konu hakkında detaylı ama sade bilgi içeren bir kaynak atarsanız memnun olurum. Zira herhangi bir class içerisinde geçen değişkene dışarıan nasıl ulaşabileceğimi ve özellikle yeni değere nasıl ulaşabileceğimi tam manasıyla anlamadım.
Tam hâli:
from database import data as db
class Unit:
"""
Ürün hakkında herşey
"""
def __init__(self):
self.name = None
def query(self, name):
"""
Veritabanında veri arar
"""
db.imlec.execute(f"SELECT * FROM products WHERE name= '{name}' ")
self.output = db.imlec.fetchall()
def add(self, name, price, piece):
"""
Veritabanına ürün ekler
"""
self.name = name
self.query(name)
if len(self.output) >= 1 and self.output[0][2] == price:
db.database.execute(f"UPDATE products SET piece={self.output[0][3] + piece} WHERE id={self.output[0][0]}")
db.database.commit()
else:
db.database.execute(f"INSERT INTO products VALUES (NULL, '{name}', '{price}', '{piece}')")
db.database.commit()
def remove(self, id):
db.database.execute(f"DELETE FROM product WHERE id={id}")
db.database.commit()
def info():
p = Unit()
print(p.name)
Unit().add('Karga Burnu', 120, 850)