首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将我的Kivy代码连接到MySql数据库?

如何将我的Kivy代码连接到MySql数据库?
EN

Stack Overflow用户
提问于 2019-09-03 19:20:47
回答 1查看 5.5K关注 0票数 0

我正在尝试创建一个应用程序,该应用程序从用户那里获取登录并将数据发送到mysql数据库,但不知道如何编辑它的代码。需要帮忙。另外,我试图创建一个语音到文本翻译的应用程序。目前,我的代码正在切换到下一个屏幕,但必须接受用户的语音输入。我该怎么做呢?

我看过一些教程,但它们不适用于我的代码

.py文件

代码语言:javascript
复制
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.uix.label import Label


Builder.load_string("""


""")

class Rootwidget(ScreenManager):
    pass

class SigninWindow(BoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def validate_user(self):
        user = self.ids.username_field
        pwd = self.ids.pwd_field
        info = self.ids.info

        uname = user.text
        passw = pwd.text

        if uname == '' or passw == '':
            info.text = '[color=#FF0000]username and/ or password required[/color]'
        else:
            if uname == 'admin' and passw == 'admin':
                info.text = '[color=#00FF00]Logged In successfully![/color]'
                App.get_running_app().root.current = "SignedIn"
            else:
                info.text = '[color=#FF0000]Invalid Username and/or Password[/color]'

class SigninApp(App):
    def build(self):
        return Rootwidget()

if __name__=="__main__":
    sa = SigninApp()
    sa.run()

.kv文件

代码语言:javascript
复制
<Rootwidget>:
    Screen:
        name: "SignIn"
        SigninWindow:
    Screen:
        name: "SignedIn"
        Label:
            text: "You have signed in."


<FlatButton@ButtonBehavior+Label>:
    font_size: 16

<SigninWindow>:
    id: main_win
    orientation: "vertical"
    spacing: 10
    space_x: self.size[0]/3
    canvas.before:
        Color:
            rgba: (1,1,1, 1)
        Rectangle:
            size: self.size
            pos: self.pos
        BorderImage:
            source: 'E:\pythonpics/blu2.png'
            pos: self.pos
            size: self.size
    BoxLayout:
        size_hint_y: None
        height: 50
        canvas.before:
            Color:
                rgba: (.06, .45, .45, 1)
            Rectangle:
                size: self.size
                pos: self.pos
        Label:
            text: "Hello! Dear User Please Sign In"
            bold: True
            size_hint_x: .9

    BoxLayout:
        orientation: 'vertical'
        padding: main_win.space_x, 10
        #spacing: 20
        BoxLayout:
            orientation: "vertical"
            spacing: 10
            size_hint_y: None
            height: 100

            Label:
                id: info
                text: ''
                markup: True
                size_hint_y: None
                height: 20
            TextInput:
                id: username_field
                hint_text: "Username"
                multiline: False
                focus: True
                on_text_validate: pwd_field.focus = True
            TextInput:
                id: pwd_field
                hint_text: "Password"
                multiline: False
                password: True
                on_text_validate: root.validate_user()
        Label:
            id: sp
            size_hint_y: None
            height: 40
        Button:
            text: "Sign In"
            size_hint_y: None
            height: 40
            background_color: (.06,.45,.45, 1)
            background_normal: ''
            on_release: root.validate_user()

        Label:
            id: sp2

代码应该能够获取用户数据并保存在mysql数据库中。

EN

回答 1

Stack Overflow用户

发布于 2019-10-30 07:49:38

首先在linux中安装带有pip的mysql连接器。

代码语言:javascript
复制
pip install mysql-connector

然后导入那个库

代码语言:javascript
复制
import mysql.connector

稍后使用数据库凭据创建一个字典,如下所示

代码语言:javascript
复制
config = {'user': 'insert_user',
          'password': 'insert_password',
          'host': '000.000.000.000',
          'database': 'insert_database_name',
          'raise_on_warnings': True}

然后创建一个类,该类具有连接mysql数据库的所有查询和结构。

代码语言:javascript
复制
class mydatabase:

        def __init__(self):
            self.db = mysql.connector.connect(**config)
            self.c = self.db.cursor()

        def get_rows(self):
            # a,b,c,d depence of your database structure and tables
            # use the query example below, query needs parenthesis obligated

            query=('SELECT {} FROM {} WHERE({}='{}')'.format("a","b","c","d"))
            self.c.execute(query)
            return self.c.fetchall()

最后,在任何地方运行这个脚本来运行一个查询。

代码语言:javascript
复制
db_connection=mydatabase()
db_answer=db_connection.get_rows()

注:改编自el3ien,因为他正在使用其他数据库库

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57777617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档