Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (20)

Лучшие ответы пользователя

Все ответы (25)
  • Как организовать хранение данных в c# WPF (программа - заучивание иностранных слов)?

    Для локальной базы может хватить и .mdb, провайдер вшит во все актуальные версии Windows.
    Можно выбрать и SQLite, на официальном сайте есть информация о том, какие библиотеки нужно таскать за проектом, чтобы он запускался на конечных машинах.
    Ответ написан
    Комментировать
  • Как лучше всего обрабатывать ошибки в python?

    Советую вам посмотреть в сторону декораторов. Полезно будет как для решения задачи, так и для общего ознакомления с синтаксическими возможностями языка.
    Дам пример самого простого декоратора, единственная функция которого "тихо" логгировать любой exception:
    import logging
    
    
    LOG = logging.getLogger(__name__)
    
    
    def handle_silently(function):
        def wrapped(*args, **kwargs): 
            result = None
            try:
                result = function(*args, **kwargs)
            except Exception as e:
                LOG.error(
                    '{}(*{}, **{}) failed with exception {}'.format(
                        function.__name__, repr(args), repr(kwargs), repr(e) 
                     )
                )
            return result
        return wrapped
    
    
    @handle_silently
    def some_function(test):
        return test / 0

    Конструкция @handle_silently заменит вашу функцию some_function на функцию wrapped.
    Механика работы wrapped является, скорее, антипаттерном, поскольку замалчивать exception совсем и тем более отдавать вместо него None - это гарантированный способ выстрелить себе в ногу. Это просто пример, в боевом проекте я бы посоветовал ререйзить (LOG.error(...); raise) ошибку в декораторе и обрабатывать несредственно в месте вызова функции (логгирование, естественно, можно и оставить).
    Для затравки и для демонстрации того, как это может быть полезно - декотораторы могут быть параметрическими (достигается это путём создания фабрики декораторов):
    def decorators_fabric(handler_function):
        def decorator(function):
            def wrapped(*args, **kwargs):
                handler_function(function.__name__, repr(args), repr(kwargs))
                return function(*args, **kwargs)
            return wrapped
        return decorator
    
    
    @decorators_fabric(print)
    def my_test_function(arg1, arg2):
        return arg1 * arg2
    Ответ написан
    Комментировать
  • LIKE sql по 2 полям?

    email LIKE '%checn%' OR name LIKE '%checn%'
    или
    CONCAT_WS(' ', email, name) LIKE '%checn%'
    Ответ написан
    Комментировать
  • Как проверить был ли совершен репост или нет?

    Тут документация по функции получения списка репостов определенной записи ВК. Есть еще статья на Хабре, где приведен код для решения той же задачи.
    У Facebook в API стоит смотреть Sharedposts.
    Ответ написан
    Комментировать
  • SQlAlchemy. Как оптимизировать запросы?

    Посоветую вам начать с включения SQLALCHEMY_ECHO и просмотра плана результирующего запроса.
    Как быстрый совет - ограничивайте запрос данными, которые вам нужны, и не бойтесь подзапросов. В большей части случаев бэкенд БД сделает всю оптимизацию за вас.
    result = Context.query.join(
        Request, Request.context_id == Context.id_
    ).join(
        Point, Point.request_id == Request.id_
    ).group_by(Context.id_).with_entities(
        Context.field1, ...
        func.count(Point.id_).label('points_count')
    )
    Ответ написан
    8 комментариев