如何使用python kivy在数据库中存储信息

How to store information across a database with python kivy

提问人:Beckett 提问时间:11/14/2023 最后编辑:Beckett 更新时间:11/14/2023 访问量:21

问:

我正在尝试制作一个应用程序,目前正在登录页面/注册页面工作。但是我遇到了一个问题,我无法获取要保存到任何类型的数据库中的信息。我曾尝试将MySQL与其他类似的大型数据库一起使用,但这非常困难,似乎无法让它工作。我也尝试使用 kivy JsonStorage,但当我为手机制作 Apk 时它不会保存。如果有人知道我如何让其中之一发挥作用,我将不胜感激。

这是我的代码。

import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.floatlayout import FloatLayout
from kivy.app import App
from kivy.uix.button import Button
from kivy.storage.jsonstore import JsonStore
from kivy.graphics import Rectangle
from kivy.lang import Builder
stored_data = JsonStore("user_info.json")
stored_data.store_load()
Builder.load_file('user_info.json')


class FloatInput(TextInput):`your text`
    input_filter = 'float'

class LimitInput(FloatInput):
    def on_text(self, instance, value):
        if len(self.text) > 8:
            self.text = self.text[0:8]

class login_screen_sign_up(FloatLayout):
    def __init__(self, **kwargs):
        super(login_screen_sign_up, self).__init__(**kwargs)
        self.layout = FloatLayout()

        "Input Username here :"
        #username input section
        self.login_prompt = Label(text=stored_data.get('Beckett')['password'], size_hint=(0.3, 0.1), pos_hint={'x': 0.1, 'y': 0.6})
        self.add_widget(self.login_prompt)
        self.login_info_un = TextInput(size_hint=(0.3, 0.1), pos_hint={'x': 0.1, 'y': 0.8})
        self.add_widget(self.login_info_un)

        #password input section
        self.password_prompt = Label(text="Input Password here :", size_hint=(0.3, 0.1), pos_hint={'x': 0.6, 'y': 0.6})
        self.add_widget(self.password_prompt)
        self.login_info_pass = TextInput(size_hint=(0.3, 0.1), pos_hint={'x': 0.6, 'y': 0.8})
        self.add_widget(self.login_info_pass)

        #password confirm section
        self.password_prompt_confirm = Label(text="Confirm Password here :", size_hint=(0.3, 0.1), pos_hint={'x': 0.1, 'y': 0.2})
        self.add_widget(self.password_prompt_confirm)
        self.login_info_pass_confirm = TextInput(size_hint=(0.3, 0.1), pos_hint={'x': 0.1, 'y': 0.4})
        self.add_widget(self.login_info_pass_confirm)

        self.button = Button(text="Sign Up", font_size=30,size_hint=(0.3, 0.1), pos_hint={'x': 0.6, 'y': 0.2})
        self.button.bind(on_press = self.click_me)
        self.add_widget(self.button)

    def click_me(self, instance):
        if len(self.login_info_un.text) > 0 and len(self.login_info_pass.text) > 0 and len(self.login_info_pass_confirm.text) > 0:
            global username_taken
            username_taken = False
            for x in stored_data:
                if x == self.login_info_un.text:
                    print('This username is already taken.')
                    username_taken = True
                else:
                    username_taken = False
            if username_taken == True:
                pass
            else:
                if self.login_info_pass.text != self.login_info_pass_confirm.text:
                    print('Passwords do not match.')
                else:
                    stored_data.put(self.login_info_un.text,     password=str(self.login_info_pass.text))
                    stored_data.store_sync()

我一直在尝试这个,当我在线尝试时它可以工作,但是当我使用 buildozer 将其传输到我的手机时,json 存储没有保存,我的应用程序崩溃了。

Python JSON 数据库 Kivy APK

评论


答: 暂无答案