Veritabanından çekilen bilgileri sıralamayla yazdırma

Merhaba Veritabanından Çektiğim Bilgileri Nasıl Büyükten Küçüğe Göre Yazdırabilirim ?

Kodlarım Şöyle;

import sqlite3



connectdb=sqlite3.connect('takimlar.db')


	
if(connectdb):
    print('Baglanti Başarılı!')
else:
    print('Bağlantı Başarısız!')
    
veritabani=connectdb.cursor()

##veritabani.execute('''
##CREATE TABLE takimlar(
##takim_siralama INTEGER NOT NULL ,
##takim_kill_puan INTEGER NOT NULL ,
##takim_sira_puan INTEGER NOT NULL ,
##takim_puan INTEGER NOT NULL ,
##takim_adi VARCHAR(50)
##)
##''')

##veritabani.execute('''INSERT INTO 
##takimlar(takim_adi,takim_puan) 
##VALUES (15,'Deneme Takım')
##''')

##oku=veritabani.execute('SELECT * FROM takimlar')
##for i in oku:
##    print("[ 1 ]", i[1],":",i[2])

print( """
[ 1 ] Sıralamayı Göster

[ 2 ] Takımı Güncelle

[ 3 ] Takım Ekle

""")
işlemler = int(input(">> "))
if işlemler == 1:
    veritabani.execute('SELECT * FROM takimlar')
    kullanicilar = veritabani.fetchall()
    for i in kullanicilar:
        print("""
Takım Adı: {}

Takım Puanı: {}

Takım Sıralama: {}

Takım Sıralama Puanı: {}

Takım Kill Puanı: {}

""".format(i[4], i[3], i[0], i[2], i[1]))

        
if işlemler == 3:
    takim_adi = input("Takım Adını Giriniz:\n>> ")
    takim_siralama = int(input("{} Takımı Kaçıncı Sırada? \n>> ".format(takim_adi)))
    takim_kill_puani = int(input("Peki Ya Kill Puanı ?\n>> "))
    if takim_siralama == 1:
        takim_siralama_puani = 10
        
    elif takim_siralama == 2:
        takim_siralama_puani = 6
        pass

    elif takim_siralama == 3:
        takim_siralama_puani = 5
        pass

    elif takim_siralama == 4:
        takim_siralama_puani = 4
        pass

    elif takim_siralama == 5:
        takim_siralama_puani = 3
        pass

    elif takim_siralama == 6:
        takim_siralama_puani = 2
        pass

    elif takim_siralama == 7:
        takim_siralama_puani = 1
        pass

    elif takim_siralama == 8:
        takim_siralama_puani = 1
        pass

    else:
        takim_siralama_puani = 0
        pass
    print("Takım Sıralama Puanı {} Olarak Ayarlandı.".format(takim_siralama_puani))
    takim_puan = takim_siralama_puani + takim_kill_puani
    print("Takım Puanı {} Olarak Ayarlandı".format(takim_puan))

    veritabani.execute("INSERT INTO takimlar(takim_adi,takim_siralama,takim_kill_puan,takim_sira_puan,takim_puan) VALUES (?,?,?,?,?)",
                      (takim_adi, takim_siralama, takim_kill_puani, takim_siralama_puani, takim_puan))
    connectdb.commit()
    connectdb.close()
    print("Kaydedildi")


Bir oyun için skor tablosu yapmaya çalışıyorum takım puanına göre büyükten küçüğe doğru ekrana yazması lazım

yok mu yardım edicek .(

SQL query’sine ORDER BY "kolon" ekleyebilirsin.

fetchall ile aldiktan sonra takimlar = sorted(takimlar, key=lambda takim: takim.bilgi) ile de yapabilirsin.

Bu arada SELECT kolon1, kolon2 yerine * dedigin ve kodda da row[0], row[1] kullandigin icin nerede hangi kolonun kullanildigi anca tablo tanimina bakarak anlasiliyor (ve koddaki tablo/data yanlis oldugu icin sorudan belli olmuyor.)

Kodlarınızı aşağıdaki gibi düzenledim. Bir çalıştırın isterseniz.

import sqlite3 as sql

connect = sql.connect("database.db")
cursor = connect.cursor()

sutunlar = (
    "takim_siralama",
    "takim_kill_puan",
    "takim_sira_puan",
    "takim_puan",
    "takim_adi"
)

cursor.execute(f"CREATE TABLE IF NOT EXISTS takimlar{sutunlar}")


def add_row_data(*args):
    if len(args) == len(sutunlar):
        cursor.execute(
            f"INSERT INTO takimlar VALUES"
            f"({', '.join('?' * len(args))})",
            args
        )
        connect.commit()


def change_data(takim_adi: str = "", sutun_adi: str = "", yeni=None):
    cursor.execute(
        f"UPDATE takimlar SET {sutun_adi} = ? WHERE takim_adi = ?",
        (yeni, takim_adi)
    )
    connect.commit()


def program():
    while True:
        print(
            "[ 1 ] Sıralamayı Göster\n"
            "[ 2 ] Takımı Güncelle\n"
            "[ 3 ] Takım Ekle\n"
            "[ 4 ] Çık\n"
        )

        islemler = int(input(">> "))
        if islemler == 1:
            kullanicilar = sorted(
                [i for i in cursor.execute('SELECT * FROM takimlar')]
            )
            for i in kullanicilar:
                print(
                    f"Takım Adı: {i[4]}\n"      
                    f"Takım Puanı: {i[3]}\n"
                    f"Takım Sıralama: {i[0]}\n"
                    f"Takım Sıralama Puanı: {i[2]}\n"
                    f"Takım Kill Puanı: {i[1]}\n"
                )
        elif islemler == 3:
            takim_adi = input("Takım Adını Giriniz:\n>> ")
            takim_siralama = int(
                input(f"{takim_adi} Takımı Kaçıncı Sırada? \n>> ")
            )
            takim_kill_puani = int(input("Peki Ya Kill Puanı ?\n>> "))
            if takim_siralama == 1:
                takim_siralama_puani = 10
            elif takim_siralama == 2:
                takim_siralama_puani = 6
            elif takim_siralama == 3:
                takim_siralama_puani = 5
            elif takim_siralama == 4:
                takim_siralama_puani = 4
            elif takim_siralama == 5:
                takim_siralama_puani = 3
            elif takim_siralama == 6:
                takim_siralama_puani = 2
            elif takim_siralama == 7:
                takim_siralama_puani = 1
            elif takim_siralama == 8:
                takim_siralama_puani = 1
            else:
                takim_siralama_puani = 0
            print(
                f"Takım Sıralama Puanı {takim_siralama_puani} "
                f"Olarak Ayarlandı."
            )
            takim_puan = takim_siralama_puani + takim_kill_puani
            add_row_data(
                takim_siralama,
                takim_kill_puani,
                takim_siralama_puani,
                takim_puan,
                takim_adi
            )
            print(f"Takım Puanı {takim_puan} Olarak Ayarlandı")
        elif islemler == 4:
            break


program()

saol agam işime yaradı sorunlarıma tek çare sensin sanırım burada .d

Arkadaşlara haksızlık etmeyelim. :innocent:

1 Beğeni