2016-08-05 10 views
2

ich einen Kivy-Code haben, wo der Ausgang ist:Abrufen von MySQL mit Kivy

enter image description here

ich die Box No. mit Strings abgerufen von MySQL

Bisher habe ich zu implementieren haben versucht, ersetzen zu wollen das MySQL zum Python-Skript:

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) 

Aber das hat nicht funktioniert.

Q: Wie kann ich MySQL-Abfragen ausführen und einzelne Zeichenfolgen in der KV-Datei drucken.

Antwort

1

Um Ihnen zu zeigen, wie Sie das machen könnten, habe ich ein kleines Suchbeispiel gemacht.
Dies sucht nach Obstnamen in der Datenbank und gibt seinen Namen und Preis an die Tabelle aus.

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()