Найти - Пользователи
Полная версия: Вывести из базы данных введённое количество строк.
Начало » Центр помощи » Вывести из базы данных введённое количество строк.
1
JJ39
Создаю приложение на python-Tkinter для открытия и работы в SQlite. Множество раз столкнулся с трудностями, и вот опять. Нужно вывести данные из таблицы в программу. Не получается вывести определённое кол-во строк(пользователь вводит в entry сколько строк хочет вывести, программа выводит).
 #Функция отображения данных таблицы
def Tablel ():
	global s
	#s = sel.get() #Получаем из поля entry
	#s1 = int(s)
	q = 0
	for i in range(9,25):
		list = root.grid_slaves(row = 1)
		for l in list:
			l.destroy()
		x = 10
		z = 0
		all_table = var.get()
		cursor.execute('SELECT * FROM {}'.format(all_table))
		rows = cursor.fetchall()
		for row in rows:
			y = 0
			x = x+1
			z = z+1
			for ro in row:
				if z>=+q or x <5:
					r = Entry()
					r.insert(0, ro)
					r.grid(row=x, column = y, sticky = "w", pady = 1)
					y = y+1
				else: 
					break
		q = q+s1
		nex.bind(Tablel)
Мой код работает только ожидание 30 секунд. Это основаная проблема
JOHN_16
ну тут кладясь говнокода и антипеттернов. Хорошо что не 1 минуту выполняется.
Я как бы не знаю чем вам помочь, кроме как переделать все.
Одна из ключевых проблем что вы делаете выборку ВСЕХ элеменов в ЦИКЛЕ.
JJ39
Исправил, может кому пригодится!!!
 def Tablel ():
	global x
	s = int(sel.get())
	q = 0
	z = 0
	x = 10
	all_table = var.get()
	cursor.execute('SELECT * FROM {}'.format(all_table))
	rows = cursor.fetchall()
	for row in rows:
		y = 0
		x = x+1
		z = z+1
		if s==0:
			messagebox.showinfo('СУБД',('Заполните поле'))
			break
		for ro in row:
			r = Entry()
			r.insert(0, ro)
			r.grid(row=x, column = y, sticky = "w", pady = 1)
			y = y+1
		if s==z:
			break
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB