Merhaba arkadaşlar. Tkinter ve sqlite ile textbox'tan gelen veriyi ekleme, sqlite veri tabanı işlemlerini yapabiliyorum. Yalnız hem pc'de çalışsın hemde cep uygulaması olsun diye Kivy'ye geçtim.
Sorularıma gelince ;
Kivy ile hangi veritabanı kullanıyor pek bilmiyorum.
Sqlite denedim : item1 = self.adi.get() AttributeError: 'main' object has no attribute 'adi' şeklinde hata veriyor. textbox'tan gelen veriyi get ile çekip ekleyemiyorum. Tkinterde doğru olan kod kivy'ye uymuyor. Farklı bir çözümü var mı ?
sqlalchemy denedim. : Veritabanı içine yazdırma ve veritabanı eklemeyi buldum. Fakat textbox'tan gelen veriyi veritabanına kaydetmeyi ne google'da nede python sitelerinde bulamadım. Örnek Enter'a bastığımızda (yada button'a bastığımızda) textbox'taki veriyi veritabanına eklesin mesela.
Sqlite; Kivy ile çalışıyorsa öncelikli olarak Sqlite ile yoksa sqlalchemy'de textbox'tan gelen veriyi veritabanına kaydetme olayı hakkında öğrenebileceğim bir link var mı bildiğiniz yada bir kod varsa paylaşabilir misiniz? Şimdiden teşekkürler.
Örnek
sqlalchemy kodu :
PHP Kod:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#!/usr/bin/kivy
import sqlite3
import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, func
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
Base = declarative_base() # Python ile Sql arasındaki bağlantıyı yapan fonksiyon
class Calisanlar(Base):
__tablename__ = 'calisanlar' # Tablo adını bu şekilde tanımlıyoruz
id = Column(Integer, primary_key=True) # Integer tipinde id sütunu oluşturduk
adi = Column(String) # String tipinde sütunumuzu oluşturduk
soyadi = Column(String)
yas = Column(Integer)
giris = Column(DateTime, default=func.now()) # Burada DateTime tarih tipine uygun veri tutmamıza yarıyor
# func.now() ile o anki tarihi öntanımlı olarak ayarlıyoruz
engine = create_engine('sqlite:///database.db') # veri tabanımız ile bağlantı kuruyoruz, yoksa oluşturuyoruz
session = sessionmaker() # veri tabanımızla iletişim kurmak için bu yapıyı kullanıyoruz
# bir nevi imleç olarak düşünülebilir
session.configure(bind=engine) # imleç ile veritabanı arasındaki bağlantıyı kuruyoruz
Base.metadata.create_all(engine)
s = session()
class main(App):
def build(self):
duzen = BoxLayout(orientation='vertical')
duzen.add_widget(Label(text='Adı:'))
adi = TextInput()
duzen.add_widget(adi)
duzen.add_widget(Widget())
gir_dugme=Button(text='Gir')
gir_dugme.bind(on_press=self.callback)
duzen.add_widget(gir_dugme)
self.title = " "
return duzen
def callback(self, event):
Buraya textboxtan veri çekilip veri tabanına kaydedilecek...
main().run()
Örnek sqlite kodu :
PHP Kod:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#!/usr/bin/kivy
import sqlite3
import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
def __init__(self, master):
#bağlantı sqlite3
self.conec=sqlite3.connect('kayit.db')
cur = self.conec.cursor()
self.conec.commit()
class main(App):
def build(self):
duzen = BoxLayout(orientation='vertical')
duzen.add_widget(Label(text='cumle:'))
adi = TextInput()
duzen.add_widget(adi)
duzen.add_widget(Widget())
gir_dugme=Button(text='Gir')
gir_dugme.bind(on_press=self.callback)
duzen.add_widget(gir_dugme)
self.title = " "
return duzen
def callback(self, event):
item1 = self.adi.get()
self.adi.delete(0,END)
cur = self.conec.cursor()
cur.execute("INSERT INTO kayit(cumle) VALUES (?)",(item1,))
self.conec.commit()
cur.close()
#final insert
self.content.insert(END,(item1))
main().run()