Kivy + sqlite3 + python Регистрация данных хранилища в базе данных вызывает эту проблему - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь создать страницу входа и регистрации из базы данных kivy и sqlite3.значения регистрации регистрируются в базе данных и переходят на страницу пользователя, а при входе пользователя в систему он проверяет базы данных и принимает на страницу пользователя.

вход в систему работает нормально, но регистрация в sqlite приводит к ошибкам:

я создаю регистр.БД, которые имеют имя таблицы Register и поля «username text» и «password int».он регистрирует оба, пока я даю имя пользователя любой текст и пароль любой int.но когда я даю оба текста, он также регистрируется и переходит на страницу пользователя.

, затем я пытался открыть базу данных командой «выбрать * из логина», она показывает пустой ввод

я создаю новый проект длярегистрация здесь - main.py

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang.builder import Builder
import sqlite3

class SignupPage(Screen):
    def register(self):
        con = sqlite3.connect("Register.db")
        cur = con.cursor()
        if self.ids["signup"].text and self.ids["passw"].text is not None:
            u = self.ids["signup"].text
            p = self.ids["passw"].text
            cur.execute("INSERT INTO Register VALUES(?, ?)",(u, p))
            self.manager.current = "user"
            con.commit()

class UserPage(Screen):
    pass

class ScreenManagement(ScreenManager):
    pass

kv_file = Builder.load_file('login.kv')

class LoginApp(App):
    def builder(self):
        return kv_file

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

здесь - login.kv

ScreenManagement:
    SignupPage:
    UserPage:

<SignupPage>:
    name: "signup_page"
    BoxLayout:
        TextInput:
            id: signup
        TextInput:
            id: passw
            password: True # hide password
        Button:
            text: "go"
            on_release: root.register()

<UserPage>:
    name: "user"
    Button:
        text: "back"
        on_release: app.root.current = "signup_page"

сообщите мне о любых моих ошибках или предложите улучшить код.

ХорошоВот код для входа в систему main.py, который отлично работает, я создаю для него новую базу данных Login.py:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang.builder import Builder
import sqlite3

class LoginPage(Screen):
    def verify(self):
        con = sqlite3.connect("Login.db")
        cur = con.cursor()

        cur.execute("SELECT * FROM Login;")

        user = self.ids["login"].text
        pswd = self.ids["passw"].text

        cur.execute('SELECT * from Login WHERE Username="%s" AND Password="%s"' % (user, pswd))
        if cur.fetchall():
            self.manager.current = "user"

class UserPage(Screen):
    pass

class ScreenManagement(ScreenManager):
    pass

kv_file = Builder.load_file('login.kv')

class LoginApp(App):
    def builder(self):
        return kv_file

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

login.kv

ScreenManagement:
    LoginPage:
    UserPage:

<LoginPage>:
    name: "login_page"
    BoxLayout:
        TextInput:
            id: login
        TextInput:
            id: passw
            password: True # hide password
        Button:
            text: "go"
            on_release: root.verify()

<UserPage>:
    name: "user"
    Button:
        text: "back"
        on_release: app.root.current = "login_page"
...