Распечатайте результат запроса базы данных sqlite в формате - PullRequest
1 голос
/ 20 января 2020

У меня есть этот студент БД с четырьмя столбцами: first_name, middle_name, last_name, school, birth_year. Я успешно прочитал содержимое базы данных с помощью инструкции SELECT, но вот где я застрял:

Как мне распечатать результат запроса в следующем формате: first_name middle_name(if available) last_name was born in birth_year? Таким образом, для каждой строки в запросе ожидаемый результат должен сделать это: Aida Blue was born in 1985.

На данный момент, если я запусту print(all_rows), код напечатает результат запроса следующим образом: [{'first_name':'Aida', 'middle_name': None, 'last_name': 'Blue', 'school': 'Washington', 'birth_year': 1981}, {...}, ....]

Ниже приведена попытка кода для решения такой проблемы:

db = cs.SQL("sqlite:///students.db")

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print("Usage: python student_school.py school")
        sys.exit()
    else:
        school = str(sys.argv[1])
        all_rows = db.execute("SELECT * FROM students WHERE school=?", school)
        first = all_rows[:][0] #I want to pick up the first col
        middle = all_rows[:][1] #if value <> None?
        last= all_rows[:][2]
        birth_year = all_rows[:][4]
        print(first_name, " " , middle_name, " ", last_name, "was born in ", birth_year \n)

Может кто-нибудь, пожалуйста, совет? Спасибо!

1 Ответ

0 голосов
/ 20 января 2020
  • Ваш all_rows список переменных словарей. Каждый дикт, представляющий запись студента.
  • Вы можете написать a для l oop, чтобы перебрать его и напечатать каждый.
  • Также в операторе печати, когда вы пишете ',' он будет автоматически поставить разделитель на (один пробел). Нет необходимости явно писать " ". То же самое с \n, поэтому нет необходимости явно писать '\ n'. Подробнее здесь https://docs.python.org/3/library/functions.html#print.
db = cs.SQL("sqlite:///students.db")

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print("Usage: python student_school.py school")
        sys.exit()
    else:
        school = str(sys.argv[1])
        all_rows = db.execute("SELECT * FROM students WHERE school=?", school)
        for student in all_rows:
            print(student['first_name'], student['middle_name'] if student['middle_name'] else '', student['last_name'], "was born in", student['birth_year'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...