Как отформатировать запросы postgreSQL в скрипте Python для лучшей читаемости? - PullRequest
1 голос
/ 13 апреля 2019

У меня есть еще один вопрос, связанный с проектом, над которым я работаю в школе. Я создал базу данных PostgreSQL с 5 таблицами и кучей строк. Я создал скрипт, который позволяет пользователю осуществлять поиск информации в базе данных с помощью меню, а также добавлять и удалять контент из одной из таблиц.

При отображении таблицы в самом CLI PostgreSQL она выглядит довольно чисто, однако всякий раз, когда отображается даже простая таблица без ввода данных пользователем, она выглядит действительно грязно. Хотя это необязательный компонент для проекта, я бы предпочел иметь что-то, что выглядит немного чище.

Я испробовал множество потенциальных решений, которые я видел в Интернете, даже несколько из-за переполнения стека, но ни одно из них не работает. Всякий раз, когда я пытаюсь использовать любой из методов, которые я видел и в чем-то понимаю, я всегда получаю ошибку:

TypeError: объект 'int' не может быть подписан

Я добавил в свой код кучу операторов print, чтобы попытаться выяснить, почему он отказывается от typecast. Это глупо. Зная меня, это, вероятно, простая опечатка, которую я не вижу. Даже не уверен, что это решение будет работать, только один из примеров, которые я видел в Интернете.

try:
        connection = psycopg2.connect(database='Blockbuster36', user='dbadmin')
        cursor = connection.cursor()
except psycopg2.DatabaseError:
        print("No connection to database.")
        sys.exit(1)

cursor.execute("select * from Customer;")
tuple = cursor.fetchone()
List_Tuple = list(tuple)

print("Customer_ID | First_Name | Last_Name | Postal_Code | Phone_Num | Member_Date")
print(List_Tuple)
print()
for item in List_Tuple:
        print(item[0]," "*(11-len(str(item[0]))),"|")
        print(item)
        print(type(item))
        print()
        num = str(item[0])
        print(num)
        print(type(num))
        print(str(item[0]))
        print(type(str(item[0])))

cursor.close()
connection.close()

Я загрузил разницу между выводом, полученным через базовый скрипт на python, и в CLI PostgreSQL. Я заблокировал имена в таблицах по соображениям конфиденциальности. https://temporysite.weebly.com/

Это не обязательно должно быть похоже на PostgreSQL, но все, что выглядит лучше, чем текущий беспорядок, было бы замечательно.

1 Ответ

0 голосов
/ 13 апреля 2019

Используйте форматирование строки , чтобы сделать это.Вы также можете установить его на пэд вправо или влево.Насколько даты используют datetime.strftime.Следующее установило бы отступы в 10 мест:

print(”{:10}|{:10}".format(item[0], item[1]))
...