Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sqlalchemy import create_engine, or_
- from sqlalchemy.orm import sessionmaker
- # Тащим модельки из файла первого задания.
- from models import Publisher, Book, Stock, Shop, Sale
- # Подключение к базе данных
- DATABASE_URL = "postgresql+psycopg2://postgres:619620qazwsx@localhost/books"
- engine = create_engine(DATABASE_URL, echo=False)
- Session = sessionmaker(bind=engine)
- session = Session()
- # Получение данных от пользователя int или str
- publisher_input = input("Введите имя или идентификатор издателя: ")
- # Делаем крутую штуку по вводным данным (except) мы однако не проходили, я его знаю из книг
- try:
- # Преобразовать входные данные в числовой идентификатор
- pub_id = int(publisher_input)
- pub_filter = Publisher.id == pub_id
- except ValueError:
- # Ввод не является числом, поэтому ищем издателя по имени
- pub_filter = Publisher.name == publisher_input
- publisher_query = session.query(Publisher).filter(pub_filter).one_or_none()
- if publisher_query is None:
- print("Издатель не найден.")
- else:
- sales_info = session.query(Book.title, Shop.name, Sale.price, Sale.date_sale)\
- .join(Stock, Stock.id_book == Book.id)\
- .join(Sale, Stock.id == Sale.id_stock)\
- .join(Shop, Stock.id_shop == Shop.id)\
- .filter(Book.id_publisher == publisher_query.id)\
- .order_by(Sale.date_sale)\
- .all()
- if sales_info: # Якобы разметка таблицы
- print("Название книги | Название магазина | Стоимость | Дата покупки")
- for title, shop_name, price, date_sale in sales_info:
- print(f"{title} | {shop_name} | {price} | {date_sale.strftime('%d-%m-%Y')}")
- else:
- print("Продажи книг данного издателя не найдены.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement