Как подключить базу данных sqlite3 к kivy?

Olanrewaju Omoyele спросил: 12 мая 2018 в 03:42 в: python

Я новичок в 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. ниже, ссылку на скрипт folder.https://drive.google.com/drive/folders/1OnWFFtkT4gg_qg-f2uA-G2Nwn5SbRy80? usp = sharing

1 ответ

Есть решение
eyllanesc ответил: 12 мая 2018 в 04:15

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

...
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" ...
Olanrewaju Omoyele ответил: 12 мая 2018 в 04:33
Спасибо @eyllanesc. Это сработало. Что делать, если я хотел, чтобы он печатал ("добро пожаловать") + информацию, соответствующую коду в таблице?
eyllanesc ответил: 12 мая 2018 в 05:04
@OlanrewajuOmoyele Использование print ("welcome", result [0]). Если мой ответ вам поможет, не забудьте отметить его как правильно, если вы не знаете, как это сделать, просмотрите тур, это лучший способ спасибо. :)