【问题标题】:Retrieving MySQL with Kivy使用 Kivy 检索 MySQL
【发布时间】:2016-08-05 04:27:12
【问题描述】:

我有一个 Kivy 代码,其输出为:

我想用从 MySQL 检索到的字符串替换 Box No.

到目前为止,我已经尝试将 MySQL 实现到 python 脚本:

class RemoveScreen(MyLayout):


    def __init__(self,**kwargs):
        db = MySQLdb.connect("localhost", "root", "[PASSWORD]", "tcs_microrage_crm")
        cursor=db.cursor()
        self.var = StringVar()
        self.label1 = Label(self, text=0, textvariable=self.var)
        myvar=str(self.var)
        #http://stackoverflow.com/questions/775296/python-mysql-parameterized-queries
        cursor.execute("SELECT part_name FROM stock_lists WHERE part_number = %s", (myvar))
        self.myvar=StringVar()
        self.myvar.set(cursor.fetchone())
        self.label2 = Label(self, text=0, textvariable=myvar)

但这没有用。

问:如何在 kv 文件中执行 MySQL 查询和打印单个字符串。

【问题讨论】:

    标签: mysql kivy kivy-language


    【解决方案1】:

    为了向您展示如何做到这一点,我做了一个小搜索示例。
    这将在数​​据库中搜索水果名称,并将其名称和价格输出到表中。

    from kivy.app import App
    
    import MySQLdb
    
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.gridlayout import GridLayout
    from kivy.uix.label import Label
    from kivy.uix.button import Button
    from kivy.uix.textinput import TextInput
    
    
    class DbCon:
    
        def __init__(self):
            self.db = MySQLdb.connect(user="root",passwd="pw",db="kivy")
            self.c = self.db.cursor()
    
        def get_rows(self,search = ""):
            self.c.execute("SELECT * FROM fruit WHERE name REGEXP '.*%s.*' LIMIT 3" % search)
            return self.c.fetchall()
    
    
    class Table(BoxLayout):
    
        def __init__(self,**kwargs):
            super(Table,self).__init__(**kwargs)
    
            self.orientation = "vertical"
    
            self.search_field = BoxLayout(orientation="horizontal")
    
            self.search_input = TextInput(text='search',multiline=False)
            self.search_button = Button(text="search",on_press=self.search)
    
            self.search_field.add_widget(self.search_input)
            self.search_field.add_widget(self.search_button)
    
            self.add_widget(self.search_field)
    
            self.add_widget(Label(text="table"))
    
            self.table = GridLayout(cols=2,rows=4)
            self.table.add_widget(Label(text="Fruit"))
            self.table.add_widget(Label(text="Price"))
    
            self.rows = [[Label(text="item"),Label(text="price")],
                         [Label(text="item"),Label(text="price")],
                         [Label(text="item"),Label(text="price")]]
    
            for item,price in self.rows:
                self.table.add_widget(item)
                self.table.add_widget(price)
    
            self.add_widget(self.table)
    
    
            self.db = DbCon()
            self.update_table()
    
    
        def update_table(self,search=""):
            for index,row in enumerate(self.db.get_rows(search)):
                self.rows[index][0].text = row[1]
                self.rows[index][1].text = str(row[2])
    
        def clear_table(self):
            for index in range(3):
                self.rows[index][0].text = ""
                self.rows[index][1].text = ""
    
    
        def search(self, *args):
            self.clear_table()
            self.update_table(self.search_input.text)
    
    
    class MyApp(App):
        def build(self):
            return Table()
    
    
    MyApp().run()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      相关资源
      最近更新 更多