Veriler nasıl karşılaştırılır?

Merhabalar,

    kullaniciadi = input("Kullanıcı adı: ")
    sifre = getpass("Şifre(gizli): ")

    arama = hesap.find().sort("kullaniciadi")

    for x in arama:
        print(x["kullaniciadi"])

Şöyle bir kod yazdım. Şunu yapmak istiyorum: Input ile girilen kullanıcı adını ve şifreyi, MongoDB veritabanında sorgulamak istiyorum. Bilgiler eşleşiyorsa(doğruysa) işlem yapmak istiyorum. Burada tıkandım kaldım.

Bunun if kodunu nasıl kurabilirim?

Merhabalar,

Kodda MongoDB ile ilgili herhangi bir sey yok. Birinden genel “MongoDB nasil kullanilir” yazisi paylasmasini mi bekliyorsunuz, yoksa sorunun kod parcasiyla bir alakasi var mi?

Amac arama'daki kullanici+sifrelere bakmaksa arama'nin icerigini gormemiz gerekiyor.

Evet ama elimin altinda o bilgiler olan veritabani yok.

Hocam tam açıklayamadım sanırım.

Şimdi şöyle: mongoDB’de daha önce veriler olacak. Program açıldığında kullaniciadi ve sifre soracak. Eğer bu input ile girilen veriler, MongoDB’deki veriler ile uyuşursa başka işlem yapacağım.

Sanırım yanlış anladınız.

Mesela:

Veritabanında: kullaniciadi: emro, sifre: 33
Programdan giriş: kullaniciadi: emro, sifre: 33

şeklinde olursa onay alacak.

Yok, dogru anladim ama yapman gerekeni anlatamadim.

Suraya bir mekanizma koyup kullaniciadi ve sifre database’de varsa bir islem gerceklestirmek istiyorsun.

Bunun MongoDB ile bir alakasi yok, arama ve x degiskenlerinin degerlerine bakiyor.

Haliyle arama’nin degerini bize verirsen, kodu calistirip database’e baglanma geregi duymadan gerekli eslesme mekanizmasini yazabiliriz.

Cunku su haliyle database’e baglanilmiyor ve arama’nin nasil bir deger aldigi hakkinda en ufak bir fikrimiz yok. Mongo’yla ugrasan biri olsaydi ekran goruntulerini arama objesine cevirebilirdi. Su an oyle birini bekliyoruz.

Sanırım şunu istiyorsunuz:

    arama = hesap.find().sort("kullaniciadi")

    for x in arama:
        print(x)

Çıktı:

{'_id': ObjectId('61229c6315a1c3d2f966a0bc'), 'kullaniciadi': 'ahmet', 'sifre': 'ahmet21', 'bakiye': 1000}
{'_id': ObjectId('612363e03fc9c13b698d5776'), 'kullaniciadi': 'serkan1903', 'sifre': 'serken88', 'bakiye': 1000}

Evet! O zaman su calisacaktir:

### kod ornekteki gibi calissin diye ###
getpass = input
class ObjectId:
	def __init__(self, oid):
		pass
### kod ornekteki gibi calissin diye ###

kullaniciadi = input("Kullanıcı adı: ")
sifre = getpass("Şifre(gizli): ")

arama = [
    {'_id': ObjectId('61229c6315a1c3d2f966a0bc'), 'kullaniciadi': 'ahmet', 'sifre': 'ahmet21', 'bakiye': 1000},
    {'_id': ObjectId('612363e03fc9c13b698d5776'), 'kullaniciadi': 'serkan1903', 'sifre': 'serken88', 'bakiye': 1000}
]

aktif_kullanici = None
for x in arama:
	if x['kullaniciadi'] == kullaniciadi and x['sifre'] == sifre:
		aktif_kullanici = x
		break

if aktif_kullanici is None:
	print("Giris yapilmadi")
else:
	print(f"{aktif_kullanici['kullaniciadi']} kullanicisi {aktif_kullanici['bakiye']} bakiye ile giris yapti")
2 Beğeni
arama = [
    {'_id': ObjectId('61229c6315a1c3d2f966a0bc'), 'kullaniciadi': 'ahmet', 'sifre': 'ahmet21', 'bakiye': 1000},
    {'_id': ObjectId('612363e03fc9c13b698d5776'), 'kullaniciadi': 'serkan1903', 'sifre': 'serken88', 'bakiye': 1000}
]

Buraya böyle yapmışsız. Mantıklı bir yöntem fakat şöyle bir şey var; mesela kullanıcı yeniden kayıt oldu. O zaman kayıtları benim manuel olarak eklemem gerekecek.

Otomatik olarak verileri çekecek bir yöntem var mıdır? Kusura bakmayın uğraştırdıysam.

Düzenleme: hallettim teşekkürler destek için.

getpass = input

class ObjectId:

    def __init__(self, oid):

        pass

arama = hesap.find().sort("kullaniciadi")

    aktif_kullanici = None

    for x in arama:

        if x['kullaniciadi'] == kullaniciadi and x['sifre'] == sifre:

            aktif_kullanici = x

            break

    if aktif_kullanici is None:

        print("Giris yapilmadi")

    else:

        print(f"{aktif_kullanici['kullaniciadi']} kullanicisi {aktif_kullanici['bakiye']} bakiye ile giris yapti")