Уведомления

Группа в Telegram: @pythonsu

#1 Март 17, 2017 19:42:47

Ruslan320
Зарегистрирован: 2017-03-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод данных из таблицы

Здравствуйте, дополнить код.
Надо чтобы можно было в entry вводить название таблице, и в label выводились данные из этой таблицы а не из RESULTS.
Заранее огромное спасибо!

 from tkinter import *
import sqlite3 as lite
import sys
def s():
    con = lite.connect('sport.sqlite')
    with con:
        cur = con.cursor()
        cur.execute("SELECT * FROM RESULTS")
        text = ''
        while True:
            row = cur.fetchone()
            if row == None:
                break
            text += str(row[0]) + " | " + "id команды: " + str(row[1]) + " | " + "Всего игр: " + str(row[2]) + " | " + "Выигрышей: " + str(row[3]) + " | " + "Поражений: " + str(row[4]) + " | " + "Разница в голах: " + str(row[5]) + " | " + "Очков: " + str(row[6]) + '\n'
        label7["text"] = text
root=Tk()
root.title("Работа с базой данных")
btn4 = Button(root, text="OK", font= "Arial 10", command = s)
btn4.grid(row=1, column=0)
label7 = Label(root)
label7.grid(row=2, column=0)
ent3 = Entry(root)
ent3.grid(row=0, column=0)
root.mainloop()

Офлайн

#2 Март 17, 2017 20:05:43

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Вывод данных из таблицы

 #
from tkinter import *
import sqlite3 as lite
import sys
def s(entry):
    con = lite.connect('sport.sqlite')
    table_name = entry.get()
    with con:
        cur = con.cursor()
        cur.execute("SELECT * FROM {}".format(table_name.upper()))
        text = ''
        while True:
            row = cur.fetchone()
            if row == None:
                break
            text += str(row[0]) + " | " + "id команды: " + str(row[1]) + " | " + "Всего игр: " + str(row[2]) + " | " + "Выигрышей: " + str(row[3]) + " | " + "Поражений: " + str(row[4]) + " | " + "Разница в голах: " + str(row[5]) + " | " + "Очков: " + str(row[6]) + '\n'
        label7["text"] = text
root=Tk()
root.title("Работа с базой данных")
label7 = Label(root)
label7.grid(row=2, column=0)
ent3 = Entry(root)
ent3.grid(row=0, column=0)
btn4 = Button(root, text="OK", font= "Arial 10", command = lambda: s(ent3))
btn4.grid(row=1, column=0)
root.mainloop()

P.S. И вам тоже почитать это бы не помешало

Отредактировано 4kpt_V (Март 17, 2017 20:06:57)

Офлайн

#3 Март 17, 2017 22:48:12

Ruslan320
Зарегистрирован: 2017-03-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод данных из таблицы

4kpt_V
Спасибо, а как сделать чтобы не надо было каждый раз менять эту часть кода:
text += str(row[0]) + " | " + "id команды: " + str(row[1]) + " | " + "Всего игр: " + str(row[2]) + " | " + "Выигрышей: " + str(row[3]) + " | " + "Поражений: " + str(row[4]) + " | " + "Разница в голах: " + str(row[5]) + " | " + "Очков: " + str(row[6]) + '\n'
Потому что при выводе данных из другой таблицы выходит ошибка:
text += str(row) + “ | ” + “id команды: ” + str(row) + “ | ” + “Всего игр: ” + str(row) + “ | ” + “Выигрышей: ” + str(row) + “ | ” + “Поражений: ” + str(row) + “ | ” + “Разница в голах: ” + str(row) + “ | ” + “Очков: ” + str(row) + ‘\n’
IndexError: tuple index out of range

Офлайн

#4 Март 17, 2017 23:16:54

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Вывод данных из таблицы

 #
position_name = ("", "id команды: ", "Всего игр: ", "Выигрышей: ")
#
line_text_block = []
for name, data in zip(position_name, row):
    line_text_block.append("{}{}".format(name, data))
result_line = " | ".join(line_text_block)
#

Или одной строкой

 #
position_name = ("", "id команды: ", "Всего игр: ", "Выигрышей: ")
#
result_line = " | ".join(["{}{}".format(name, data) for name, data in zip(position_name, row)])
#

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version