Python Çalışmayı Durdurdu

157134

Kilopat
Katılım
22 Şubat 2017
Mesajlar
1.636
Makaleler
3
Çözümler
5
Bir kullanıcı girişi arayüzü yapmak için uğraşıyorum. Kayıt ol ve giriş yap adlı iki butonum var. Kayıt olurken sıkıntı yaratmıyor ama giriş yapa basınca direk "Python Çalışmayı Durdurdu." hatasını veriyor. Veritabanından veri çekiyorum sanırsam ondan kaynaklanıyor ama bir türlü çözemedim. Yardımcı olursanız sevinirim. @Vavien.
Python:
import sys
import sqlite3

from PyQt5 import QtWidgets

class Window(QtWidgets.QWidget):

    def __init__(self):

        super().__init__()
        self.create_connect()
        self.init_ui()

    def create_connect(self):
        self.con = sqlite3.connect("kullanıcı_verileri.db")
        self.cursor = self.con.cursor()

        query = "Create table if not exists database (nickname TEXT, password TEXT)"

        self.cursor.execute(query)
        self.con.commit()

    def init_ui(self):

        self.welcome = QtWidgets.QLabel("Programa Hoşgeldiniz.")
        self.nickname_area = QtWidgets.QLineEdit("")
        self.password_area = QtWidgets.QLineEdit("")
        self.password_area.setEchoMode(QtWidgets.QLineEdit.Password)
        self.loginbutton = QtWidgets.QPushButton("Giriş Yap")
        self.registerbutton = QtWidgets.QPushButton("Kayıt Ol")

        v_box = QtWidgets.QVBoxLayout()

        v_box.addWidget(self.welcome)
        v_box.addWidget(self.nickname_area)
        v_box.addWidget(self.password_area)
        v_box.addStretch()
        v_box.addWidget(self.loginbutton)
        v_box.addWidget(self.registerbutton)

        h_box = QtWidgets.QHBoxLayout()

        h_box.addStretch()
        h_box.addLayout(v_box)
        h_box.addStretch()


        self.setLayout(h_box)
        self.setWindowTitle("Kullanıcı Girişi")

        self.loginbutton.clicked.connect(self.login)
        self.registerbutton.clicked.connect(self.register)

        self.show()

    def login(self):

        nickname = self.nickname_area.text()
        password = self.password_area.text()

        query = "Select * from database where nickname = ? and where password = ?"

        self.cursor.execute(query,(nickname,password))
        data = self.cursor.fetchall()

        if len(data) == 0:
            self.welcome.setText("Böyle bir kullanıcı yok\n Lütfen Tekrar Deneyiniz.")
        else:
            self.welcome.setText("Hoşgeldiniz." + nickname)




    def register(self):

        nickname = self.nickname_area.text()
        password = self.password_area.text()

        query = "Insert into database Values (?,?)"

        self.cursor.execute(query,(nickname,password))
        self.con.commit()

        self.welcome.setText("Başarıyla kayıt olundu.")



app = QtWidgets.QApplication(sys.argv)
window = Window()
sys.exit(app.exec())
 
Son düzenleyen: Moderatör:
Bunu xgboost 0.90'ı (terminal üzerinden) kaldırıp ardından xgboost 0.80'i yükleyerek çözdüm
Bu bir alıntıdır.
İlk defa böyle xgboost diye bir şeyle karşılaşıyorum.
Python'da Qt olaylarını bilmiyorum ama, butona basıldığı zaman veritabanına bağlanma olayı yerine print komutunu yazdır. En azından hatanın veritabanı işleminden mi kaynaklandığını bulursun.
Inputlar sıkıntısız çalışıyor. Sorgu yanlış desem onuda kaç kez kontrol ettim onda da sıkıntı yok. Aynı şey Register'de de olmuştu ama orada düzelttim. Bunu ne yaptıysam düzeltemedim.
 
İlk defa böyle xgboost diye bir şeyle karşılaşıyorum.

Inputlar sıkıntısız çalışıyor. Sorgu yanlış desem onuda kaç kez kontrol ettim onda da sıkıntı yok. Aynı şey Register'de de olmuştu ama orada düzelttim. Bunu ne yaptıysam düzeltemedim.
İngilizce seviyeniz nasıl acaba? Size bir site atsam anlayabilir misiniz ?
 
Teşekkür ederim. Buradakileri okuyunca aklıma CMD üzerinden çalıştırmak geldi. Çalıştırdım ve şu hatayı verdi:

Python:
  self.cursor.execute(query,(nickname,password))
sqlite3.OperationalError: near "where": syntax error

Sorunu da şöyle çözdüm. Sorgumda aşağıda da belirttiğim üzere iki where ifadesi kullanmışım. Birini çıkarınca düzeldi.
Python:
#2 adet where
query = "Select * from database where nickname = ? and where password = ?"
#Doğru yazımı
query = "Select * from database where nickname = ? and password = ?"
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı