• 25-03-2024, 04:31:16
    #1
    arkadaşlar bu kodlar ile mysql tablosundan while True: ile veri çekiyorum. Amacım kod çalıştığı sürece ilk mysql bağlantısını kullanmak.( her sorguda yeniden mysql bağlantısı yapmamak) Kodu ilk çalıştırdığımda eğer veri varsa çekiyor ancak tablo boş ise ve kodlar çalıştığında veritabanına bir veri eklendiğinde yeni eklenen veriyi çekmiyor.

    import pymysql
    
    connection = None  # Başlangıçta bağlantı yok
    
    
    def get_veri():
        global connection  # Global değişken kullanma
        
        try:
            # Eğer bağlantı yoksa ya da kapalıysa, yeniden bağlan
            if connection is None or not connection.open:
                connection = pymysql.connect(
                    host="192.242.117.123",
                    user="ss",
                    password="hD5e27xy",
                    database="ss"
                )
            else:
                # Bağlantı hala açıksa, ping at
                ping_result = connection.ping()
                if ping_result is None:
                    print("Bağlantı hala açık")
                else:
                    print("Bağlantı kapalı")
    
            # Cursor oluştur
            cursor = connection.cursor()
            try:
                cursor.execute("SELECT * FROM keklik")
                results = cursor.fetchall()
                if not results:
                    print("Veritabanında sonuç bulunamadı.")
                    return None, None
                else:
                    for row in results:
                        isim= row[0]
                        sehir= row[1]
              
                    return isim , sehir
            except Exception as e:
                print("Bir mysql hata oluştu:", e)
                # Hata urumunda None değerleri döndür
                return None, None
                    
        except Exception as e:
            print("Bir hata oluştu:", e)
            # Hata durumunda None değerleri döndür
            return None, None
  • 25-03-2024, 04:53:16
    #2
    import pymysql
    import time
    
    connection = None
    
    def get_veri():
    global connection
    
    try:
    # Bağlantıyı kontrol et ve gerekirse yeniden bağlan
    if connection is None or not connection.open:
    connection = pymysql.connect(host="192.242.117.123",
    user="ss",
    password="hD5e27xy",
    database="ss")
    print("Bağlantı başarıyla kuruldu.")
    
    cursor = connection.cursor()
    # Veritabanından veri çek
    cursor.execute("SELECT * FROM keklik")
    results = cursor.fetchall()
    
    if not results:
    print("Veritabanında yeni veri bulunamadı.")
    return None
    else:
    for row in results:
    isim = row[0]
    sehir = row[1]
    print(f"İsim: {isim}, Şehir: {sehir}")
    # En son çekilen kaydı takip etmek için son kaydın ID'sini güncelleyebilirsiniz
    # last_id = results[-1][0]  # ID sütunu ilk sütunsa ve sonuçlar ters sıralıysa
    except Exception as e:
    print(f"Bir hata oluştu: {e}")
    return None
    
    # Sürekli döngü içinde veri çek
    while True:
    get_veri()
    time.sleep(10)  # 10 saniye beklet


    chat gpt ile güncellettim hocam.
  • 25-03-2024, 04:57:40
    #3
    Cursoru kapatmayi denedin mi? cursor.close()
  • 25-03-2024, 14:08:33
    #4
    kazimolmez adlı üyeden alıntı: mesajı görüntüle
    Cursoru kapatmayi denedin mi? cursor.close()
    Teşekkür ederim sorun çözüldü.