/
Kirby
/
WorkBook
Обзор
Документация
Войти
/
Kirby
/
WorkBook
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.py
47 строк
1 KB
Alex
Initial commit
22 апр 2026, 20:04
22 апр 2026, 20:04
ea99408
Код
Авторство
О чём код?
import sqlalchemy as sq from sqlalchemy.orm import sessionmaker from models import create_tables, Publisher, Book, Shop, Stock, Sale from config import DSN def search_publisher(session, term): if term.isdigit(): publisher = session.get(Publisher, int(term)) else: publisher = session.query(Publisher).filter(Publisher.name.ilike(f'%{term}%')).first() if not publisher: print(f'Издатель "{term}" не найден') return result = session.query( Book.title, Shop.name, Sale.price, Sale.date_sale ).join(Stock, Stock.id_book == Book.id)\ .join(Shop, Shop.id == Stock.id_shop)\ .join(Sale, Sale.id_stock == Stock.id)\ .filter(Book.id_publisher == publisher.id)\ .order_by(Sale.date_sale.desc())\ .all() if not result: print(f'Нет продаж для "{publisher.name}"') return print(f'\n{publisher.name}:') print(f'{"Книга":<30} | {"Магазин":<20} | {"Цена":<8} | {"Дата":<10}') print('-' * 74) for title, shop, price, date in result: print(f'{title:<30} | {shop:<20} | {price:<8} | {date:%d-%m-%Y}') def main(): engine = sq.create_engine(DSN) create_tables(engine) Session = sessionmaker(bind=engine) session = Session() term = input('Введи id или имя издателя: ').strip() if term: search_publisher(session, term) session.close() if __name__ == '__main__': main()