Önceki konuda kullanıcının bir form aracılığıyla girdiği verileri veritabanına kaydetme işlemini gerçekleştirdik. Şimdi de veritabanındaki bu verilere ulaşmayı ve web sayfasında görüntülemeyi görelilm.
Öncelikle Python kodumuz içinde kullanıcı verilerini görüntülememizi sağlayacak olan web adresini oluşturalım ve içinde veritabanına bağlanarak kayıtlı verileri Select SQL sorgusu ile çekecek olan bir fonksiyon yazalım;
@ilkproje.route("/kullanicibilgileri") def kullanicibilgileri(): erisim = veritabaniBaglantisi.connection.cursor() sorgu = "SELECT adSoyad,email FROM kullanicilar" kontrol = erisim.execute(sorgu) if kontrol > 0: veriler = erisim.fetchall() return render_template("kullanicibilgileri.html", veriler = veriler) else: return render_template("kullanicibilgileri.html", hata ="Veritabanında kayıt bulunamadı.") erisim.close()
İlk olarak web sitemize /kullanicibilgileri şeklinde yeni bir web adresi ekledik. Daha sonra aynı isimde bir fonksiyon oluşturduk. Daha önceki konularda kullandığımız veritabanibaglantisi isimli nesneyi kullanarak veritabanımıza erişim sağladık ve erisim isimli bir değişkende depoladık.
Burada veritabanından tablodaki verileri okuma işlemi gerçekleştireceğimiz için SQL sorgumuz Select sorgusu olacak. Örnekte tablodaki yalnızca ad-soyad ve email sütunlarını belirterek bu verilere ulaşmak istediğimizi belirttik.
Veritabanına erişim sağlayarak sorgumuzu çalıştıracak olan kodu kontrol isimli bir değişkende depoladık. bu sayede kontrol değişkeninin değerine göre koşullu bir ifade oluşturabiliyoruz. Koşullu ifademizde kontrol değişkeninin değerinin sıfırdan büyük olmasını test ediyoruz. Eğer mevcut erişim yetkileri ve bağlantı kodları ile sorgu çalıştırılamazsa kontrol değişkeninin değeri sıfır olacaktır. Sıfırdan büyük olması durumu için fetchall() metodu ile tüm veriyi çekmesini belirtiyor ve dönen bilgileri veriler isimli bir değişkende depoluyoruz.
Son olarak bu verileri web sitesinde gösterecek olan kullanicibilgileri.html isimli bir HTML şablonuna gönderiyoruz. Ancak henüz bu şablonu oluşturmadık.
Bir sonraki adımda kullanicibilgileri.html şablonumuzu oluşturuyoruz;
{% extends "temel.html" %} {% block icerik %} <h3>Kullanıcı Bilgileri</h3> <hr> {% for veri in veriler %} <p>Kullanıcı Adı - Soyadı: {{ veri.adSoyad }}<br/> Email Adresi: {{ veri.email }}</p> {% endfor %} {{ hata }} {% endblock %}
Hatırlarsanız, veritabanı bağlantısı için ayarlarımızı tanımlarken döndürülecek olan verinin sözlük formatında olmasını istediğimizi belirtmiştik. Oluşturduğumuz fwg veritabanındaki kullanicilar isimli tablonun adSoyad ve email sütunlarında bulunan tüm verileri sözlük formatında aldık ve kullanicibilgileri.html dosyasına gönderdik. Burada birden fazla kayıt olduğu için sözlük verilerini bir döngü yardımıyla ekrana yazdırıyoruz. Bildiğiniz gibi Jinja2 HTML şablonları için Python kodlarımızı {% kodlarımız %} simgeleri arasına verileri ise {{ verilerimiz }} çift süslü parantezleri arasına yazıyorduk. Oluşabilecek sorunlar için hata mesajını Python kodlarımızda yer alan else bloğuna yerleştirmiştik. Burada da hata değişkeninin değerini ekrana yazdıracak olan {{ hata }} ifadesini ekliyoruz ama hata gelmezse herhangi bir çıktı oluşturmaz.
Web sayfamızı ziyaret edersek kullanıcı verilerini görürüz;
Tabii kullanıcı verimiz az olduğu için şimdilik sadece veritabanından verilerin nasıl çekilip sayfada görüntülendiğini öğrenmeniz için gerekli içeriği ekledik. Kayıtların çok olduğu durumlar için sayfalama yapmak, filtreler ve arama fonksiyonu kullanmak gibi ek işlemleri de kodlamamız gerekecektir.
Güncelleştiriliyor…
Bağlantıda Kalalım