Setup yapınca data base ye erişemiyorum

merhaba arkadaslar kendımce bır uygulama yazdım python customtkinter ile bu uygulamayı once exe sonra setup yaptım setup yapınca uygulama database erısemıyor oysakı setup yapınca data base i de a uygulama dosyaları arasına eklemıstım ekledıgım dıger resım dosyaları calısıyor exe de bu sorunu yasamıyom nerde yanlıs yapmıs olabılırım cozumu nedır tesekurler
(sqlite kullandım ve ınno setup ıle setup yaptım)

self.baglanti = sqlite3.connect("work.db")
        self.cursor = self.baglanti.cursor()
        self.cursor.execute("""CREATE TABLE IF NOT EXISTS WORKS(
                                WORK text UNIQUE,
                                meaning text UNIQUE
            )""")
        self.cursor.execute("""INSERT INTO WORKS (WORK, meaning) VALUES (?,?)""",(self.enting.get(),self.enttr.get()))
                  self.baglanti.commit()

Hata nedir?

Hatanın bir görseli falan yok mu böyle bilmemiz imkansıza yakın ve exeye çevirirken pyinstaller kullanıp dener misiniz birde ?

hata yok cunku ortada verıyı ekleyıp cekebılecegi dosyası yok uygulamanın mantıgı şu kullanıcıdan aldıgı verıyı saklıyo daha sonra kullanıcı ıstedıgı zaman goruntuleyebılıyo ama suan kullanıcı verı gırdımı verı herhangı bır dosyaya kaydedılmıyo ve verıyı goremıyorum ama bu durum exe ıken yoktu calısıyodu setup yaptım setup yaparken db dosyasınıda yanına attım ama dosya yokmus gıbı calısıyo verı kaydetmıyo bu sorun setup yapınca genel bısımı db dosyasını uygulamadan bagımısız bır yerde mı saklayıp uygulamaya dosyanın yolunu vererekmı setup yapmam lazım bılemedım

Merhaba,

Programın okumaya çalıştığı dizini görebileceğiniz bir print ifadesini kodunuza yerleştirip, hangi dizinin okunmaya çalışıldığını görebilme imkanınız var mı?

Bir ihtimale göre db’nin okunabilmesi için db ile kurulum sonunda oluşan exe dosyasının aynı dizinde yer almıyor olması gerekiyor olabilir.

Setup için kullandığınız programın spesifikasyonlarını incelemenizi de tavsiye ederim. Programın, kurulumla alakalı özelleştirmelerini nasıl yapabileceğiniz programın dokümantasyonunda yazıyor olabilir.

Exe dediğimiz dosya, programınızdan bağımsız olan ama yine de gerekli kütüphanelerin ve yolların tanıtılması ve sonra da programınızın çalıştırılması gibi işlevlerle sınırlı bir çalıştırılabilir dosya da olabilir. Oluşturduğunuz exe dosyası ihtiyaç duyulan bütün kütüphaneleri ve nesneleri kendi bünyesinde mi taşıyor? Kurulum sonunda nasıl bir proje dizin yapısı oluşuyor? Bu ayrıntılar hakkında bizleri biraz daha bilgilendirebilir misiniz rica etsem?

1 Beğeni

Çok düz yazmışsınız hocam okuduğumu tam olarak anlayamadım açıkcası. Hata ayıklama yapmanız lazım. Print…

Mongodb kullansa cloud a direkt olarak bağlantı sağlasa güzel olurdu bence.

Aşağıdaki kodlardan önce os.getcwd() fonksiyonunu çağırıp, o an hangi dizinde olunduğuna bakıp bir düzenleme yapmak gerekiyor olabilir.

print(__import__("os").getcwd())
self.baglanti = sqlite3.connect("work.db")
        self.cursor = self.baglanti.cursor()
        self.cursor.execute("""CREATE TABLE IF NOT EXISTS WORKS(
                                WORK text UNIQUE,
                                meaning text UNIQUE
            )""")
        self.cursor.execute("""INSERT INTO WORKS (WORK, meaning) VALUES (?,?)""",(self.enting.get(),self.enttr.get()))
                  self.baglanti.commit()

Burada work.db isminde bir yol var sadece. Pyinstaller ile tek bir exe dosyası oluşturup bu work.db dosyasını oluşan exe dosyasının yanına koyarsanız, program bu veritabanını okur. Ancak Medet_Ak, programı inno setup adında bir program aracılığı ile kurduğundan bahsediyor. Kurulum sonunda kaç tane dosya oluştuğunu bilmiyorum. Oluşan exe dosyasının ne yaptığını da bilmiyorum. Dolayısıyla oluşan exe’nin yanına veritabanı dosyasını koymanın veritabanının okunmasını sağlayıp sağlamayacağını bilemiyorum.

Veritabanı işlemi yapmadan önce print fonksiyonunu çalıştırıp o an hangi dizinde olunduğu tespit edilebilirse, belki db’nin bulunması gereken dizin de bu şekilde öğrenilebilir.

1 Beğeni