sqlite结合python_Python+kivy+SQLite:如何将它们结合使用

我是python、kivy和sqlite的新手。但我必须完成这项艰巨的任务。:—(如有任何帮助,将不胜感激。提前谢谢!

任务是:在android的kivy屏幕上显示来自.db文件的数据。

在这里我再次发布代码。#!/usr/bin/python

# -*- coding: utf-8 -*-

import sqlite3 as lite

import sys

con = lite.connect('test.db')

with con:

cur = con.cursor()

cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT)")

cur.execute("INSERT INTO Cars VALUES(1,'Audi',52642)")

cur.execute("INSERT INTO Cars VALUES(2,'Mercedes',57127)")

cur.execute("INSERT INTO Cars VALUES(3,'Skoda',9000)")

cur.execute("INSERT INTO Cars VALUES(4,'Volvo',29000)")

cur.execute("INSERT INTO Cars VALUES(5,'Bentley',350000)")

cur.execute("INSERT INTO Cars VALUES(6,'Citroen',21000)")

cur.execute("INSERT INTO Cars VALUES(7,'Hummer',41400)")

cur.execute("INSERT INTO Cars VALUES(8,'Volkswagen',21600)")

然后将数据库保存到C:\\test.db。

然后我用label和button制作了一个kivy屏幕。# -*- coding: utf-8 -*-

from kivy.app import App

from kivy.uix.boxlayout import BoxLayout

from kivy.uix.label import Label

from kivy.lang import Builder

import random

root_widget = Builder.load_string('''

BoxLayout:

orientation: 'vertical'

Label:

text: 'Hello' #How to define it?

font_size: 30

Button:

size: root.width/2, 15

text: 'next random'

font_size: 30

# on_release: #How to define it?

''')

class TestApp(App):

def build(self):

return root_widget

if __name__ == '__main__':

TestApp().run()

我想在每次单击button时,从label上显示的db file中获得一个random汽车名。

最初的label文本,现在是“Hello”一词,应该替换为一个随机的汽车名。因此,每次运行程序时,都会在label上显示车辆名称。

但我真的不知道怎么写代码。

谢谢你的帮助。

更新

我写了代码,但不起作用。# -*- coding: utf-8 -*-

from kivy.app import App

from kivy.uix.boxlayout import BoxLayout

from kivy.uix.label import Label

from kivy.lang import Builder

from kivy.clock import mainthread

import sqlite3

import random

class MyBoxLayout(BoxLayout):

def init(self, **kwargs):

super().__init__(**kwargs)

@mainthread # execute within next frame

def delayed():

self.load_random_car()

delayed()

def load_random_car(self):

conn = sqlite3.connect("C:\\test.db")

cur = conn.cursor()

####Length of db file

with conn:

cur = conn.cursor()

cur.execute("SELECT * FROM Cars")

rows = cur.fetchall()

LengthSQLFile = len(rows)

print LengthSQLFile

CurrentNo = random.randint(0, LengthSQLFile)

CurrentNo_ForSearch = (CurrentNo ,)

cur.execute("select * from Cars where rowid = ?" , CurrentNo_ForSearch)

CurrentAll = cur.fetchone()

CurrentAll = list(CurrentAll) # Change it from tuple to list

print CurrentAll

Current = CurrentAll[1]

self.ids.label.text = Current #"fetch random car data from db and put here"

root_widget = Builder.load_string('''

BoxLayout:

orientation: 'vertical'

Label:

id: label

font_size: 30

Button:

size: root.width/2, 15

text: 'next random'

font_size: 30

on_release: root.load_random_car()

''')

class TestApp(App):

def build(self):

# MyBoxLayout(BoxLayout)

return root_widget

if __name__ == '__main__':

TestApp().run()

#2更新:

现在的密码是。。。它显示错误消息:AttributeError: 'BoxLayout' object has no attribute 'load_random_car'# -*- coding: utf-8 -*-

from kivy.app import App

from kivy.uix.boxlayout import BoxLayout

from kivy.uix.label import Label

from kivy.lang import Builder

from kivy.clock import mainthread

import sqlite3

import random

class MyBoxLayout(BoxLayout):

def init(self, **kwargs):

super().__init__(**kwargs)

@mainthread # execute within next frame

def delayed():

self.load_random_car()

delayed()

def load_random_car(self):

conn = sqlite3.connect("C:\\test.db")

cur = conn.cursor()

cur.execute("SELECT * FROM Cars ORDER BY RANDOM() LIMIT 1;")

currentAll = cur.fetchone()

currentAll = list(currentAll) # Change it from tuple to list

print currentAll

current = currentAll[1]

self.ids.label.text = current #"fetch random car data from db and put here"

root_widget = Builder.load_string('''

BoxLayout:

orientation: 'vertical'

Label:

id: label

font_size: 30

Button:

size: root.width/2, 15

text: 'next random'

font_size: 30

on_release: root.load_random_car()

''')

class TestApp(App):

def build(self):

# MyBoxLayout(BoxLayout)

return root_widget

if __name__ == '__main__':

TestApp().run()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值