Уведомления

Группа в Telegram: @pythonsu

#1 Март 11, 2018 19:03:02

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод инфо из базы с названием колонок

Всем привет
Как сделать, чтобы вывелось все “красиво”)

#!/usr/bin/python

import sqlite3
from sqlite3 import Error

database = "C:\\sqlite\pythonsqlite.db"

conn = sqlite3.connect(database)

cur = conn.cursor()
cur.execute("SELECT * FROM users")



# Выведет название столбцов
# cur.execute("PRAGMA table_info(users)")
# print (cur.fetchall())

# cur.description

rows = cur.fetchall()

for row in rows:
print(row)

cur.close()
conn.close()

В стиле
ID NAME TEL
—————–
1 Vas 123
2 Rty 321


Потому что у меня на моем условном примере выводится, типа

(1, ‘aNTONIO’, ‘+2345563’)
(2, ‘dENIZKA’, ‘+2666633’)

А хочется, чтобы как минимум были заголовки колонок сверху.

Офлайн

#2 Март 11, 2018 19:10:04

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод инфо из базы с названием колонок

Хорошо, можно как-то так

 import sqlite3
from sqlite3 import Error
database = "C:\\sqlite\pythonsqlite.db"
conn = sqlite3.connect(database)
cur = conn.cursor()
cur.execute("SELECT * FROM users")
col_name_list = [tuple[0] for tuple in cur.description]
# Выведет название столбцов
# cur.execute("PRAGMA table_info(users)")
# print (cur.fetchall())
print(col_name_list)
print('---------------------------')
# cur.description
rows = cur.fetchall()
for row in rows:
        print(row)
cur.close()
conn.close()

 ['id', 'name', 'phone']
---------------------------
(1, 'aNTONIO', '+2345563')
(2, 'dENIZKA', '+2666633')
(3, 'Vaasilina', '+3662633')

А можно ли, чтобы тогда без этих круглых скобок и все ровно было ровно все, как будто бы в колонках смотрелось?
Мало ли… возможно, есть что-то выравнивающее в python…это же дзен язык…

Офлайн

#3 Март 11, 2018 20:16:46

vic57
Зарегистрирован: 2015-07-07
Сообщения: 903
Репутация: +  126  -
Профиль   Отправить e-mail  

Вывод инфо из базы с названием колонок

 >>> t = ('1','qwe','qwerty')
>>> print('\t'.join(t))
1	qwe	qwerty
>>> 

Офлайн

#4 Март 11, 2018 23:40:11

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод инфо из базы с названием колонок

Ок, так что - ли?


print('\row'.join(row))

Не понимаю…

Офлайн

#5 Март 12, 2018 05:20:17

vic57
Зарегистрирован: 2015-07-07
Сообщения: 903
Репутация: +  126  -
Профиль   Отправить e-mail  

Вывод инфо из базы с названием колонок

 print('\t'.join(row))

Офлайн

#6 Март 12, 2018 20:16:04

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод инфо из базы с названием колонок

))

Неправильно. Ошибка.

#!/usr/bin/python

import sqlite3
from sqlite3 import Error

database = "C:\\sqlite\pythonsqlite.db"

conn = sqlite3.connect(database)

cur = conn.cursor()
cur.execute("SELECT * FROM users")

rows = cur.fetchall()

for row in rows:

print(row)
# print('\t'.join(row))

cur.close()
conn.close()

Если раскомментировать print('\t'.join(row)) и закомментировать print(row), то ничего не работает.

Офлайн

#7 Март 13, 2018 00:16:03

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Вывод инфо из базы с названием колонок

Тогда, наверно, так:

 import sqlite3
from sqlite3 import Error
w=12                       #подобрать ширину столбцов в символах
database = "C:\\sqlite\pythonsqlite.db"
conn = sqlite3.connect(database)
cur = conn.cursor()
cur.execute("SELECT * FROM users")
col_name_list = [t[0] for t in cur.description]
# Выведет название столбцов
# cur.execute("PRAGMA table_info(users)")
# print (cur.fetchall())
print(*[s.ljust(w) for s in col_name_list])
print('-'*w*3)           #подобрать ширину линии
# cur.description
rows = cur.fetchall()
for row in rows:
        print(*[str(s).ljust(w) for s in row])
cur.close()
conn.close()

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version