Как мне подключить базу данных sqlite3 к kivy? - PullRequest
0 голосов
/ 05 июня 2018

Я новичок в Kivy, я создаю приложение, которое получает информацию из базы данных.Я пытался подключиться, и каждый раз, когда я запускаю код, он возвращает ошибку проверки.ниже приведен код.

import os
os.environ['KIVY_GL_BACKEND'] = 'angle_sdl2'
import sqlite3
import kivy 
kivy.require('1.0.5') 
from kivy.uix.gridlayout import GridLayout 
#from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.button import Button 
from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.widget import Widget 
from kivy.properties import ObjectProperty, StringProperty 
Builder.load_file('screen.kv') 

class loginView(Widget): 
    status=ObjectProperty(None) 
    def validate(self,code):
        with sqlite3.connect("company.db") as db:
            cursor = db.cursor()
            user = ("SELECT *FROM userinfo WHERE CODE = code")
            cursor.execute(user)
            result = cursor.fetchall()
            if code == result: 
                print (welcome )
                self.clear_widgets() 
            else: 
                self.status.text="Verification failed" 

class mainClass(App): 
    def build(self): 
        return loginView() 

if __name__ == '__main__': 
    mainClass().run() 

____________________________ screen.kv __________________________________________

<loginView>: 
    status:result 
    Label: 
            text:"Yousafe Systems" 
            pos:600,600 
            font_size:40



    Label: 
            text:"Enter code" 
            pos:450,400 



    TextInput: 
            multiline:False 
            pos:600,425 
            size:200,45 
            font_size:20 
            id:code 

    Button: 
            text:"Login" 
            size:100,50 
            pos:600,325 
            on_press:root.validate(code.text) 
    Label: 
            text:"" 
            pos:600,100 
            id:result 

Обновление: Я прошу прощения за ошибки отступа.это на самом деле мой первый раз использования SO.пожалуйста, найдите ниже ссылку на папку скрипта.https://drive.google.com/drive/folders/1OnWFFtkT4gg_qg-f2uA-G2Nwn5SbRy80?usp=sharing

1 Ответ

0 голосов
/ 05 июня 2018

Запрос некорректен, так как вы ищете в базе данных код, равный «коду», а не значению кода переменной, с другой стороны, сравнение результатов с кодом всегда будет ложным, поскольку результатысписок кортежей, и при сравнении его со строкой это никогда не будет верным, если код существует в базе данных, то результатом будет непустой список, и мы используем его для проверки.

...
class loginView(Widget): 
    status=ObjectProperty(None) 
    def validate(self,code):
        with sqlite3.connect("company.db") as db:
            cursor = db.cursor()
            cursor.execute("SELECT * FROM userinfo WHERE CODE = ?", (code,))
            result = cursor.fetchall()
            if result: 
                print("welcome")
                self.clear_widgets() 
            else: 
                self.status.text="Verification failed" 

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...