• Как заменить none на пустые ячейки при выгрузке с БД в WEB?

    @Akina
    Сетевой и системный админ, SQL-программист.
    как обработать значения None и заменить их на пустые ячейки в представлении WEB интерфейса?


    Что такое "None"? текстовый литерал с этим значением? или NULL?

    Если второе - то соответствующее поле надо завернуть в COALESCE(), в запросе в списке вывода. Если первое - то предварительно ещё использовать NULLIF().
    Ответ написан
    Комментировать
  • Объясните формулу?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вот та же формула из другой статьи:
    642e69534b41d129216501.pngПолагаю, что эта цепочка минусов из-за неправильного отображения корня.
    Ответ написан
    Комментировать
  • Как в web интерфейсе добавить выборку по датам из таблицы?

    Stalker_RED
    @Stalker_RED
    Конечно есть и книги и курсы. Подавляющее большинство всех сайтов, точно более 90% - это и есть интерфейсы к БД с дизайнерскими изысками.

    Загуглите для начала "python web crud example", потом приходте с более конкретными вопросами.

    Пользователь должен вбивать в ячейках начальную и конечную дату

    читайте что такое html form

    данные должны выгружаться именно в этом диапазоне

    Добавляйте в запрос условие
    SELECT * FROM toplivo
    WHERE
    	payment_date BETWEEN '2007-02-07' AND '2007-02-15';
    Ответ написан
    3 комментария
  • Так какой же приоритет операторов == и in?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Оно равносильно записи print(5 < 4 > 3)
    или
    print(True == 0 and 0 in [0])
    Ответ написан
    4 комментария
  • Почему возникает ошибка при вызове delattr?

    Vindicar
    @Vindicar
    RTFM!
    Потому в твоем коде q - это атрибут SomeClass, а не его экземпляров.
    В первом случае ты создал атрибут q у экземпляра a, а потом прочитал и удалил.
    Во втором случае ты попытался прочитать атрибут q на экземпляре, но его там нет. Поэтому язык начал искать атрибут в самом классе и нашел. А потом ты попытался удалить атрибут на экземпляре. Но его там нет.
    Ответ написан
    2 комментария
  • Как получить и форматировать цену с копейками на python?

    Vindicar
    @Vindicar
    RTFM!
    Ну можно сделать регулярку. Но вообще тебе правильно подсказывают: сделай валидацию ввода! Всё равно юзеров не перехитришь, с них станется прописью ввести.
    import re
    from decimal import Decimal  # не используй float для денег!
    
    sum_regexp = re.compile(r'^((?:\D*\d+)+?)(?:\D+(\d{2}))?\D*$')
    
    def string_to_sum(s: str) -> Decimal:
        match = sum_regexp.match(s)
        if match is None:
            raise ValueError(f'Not a correct sum: {s!r}')
        integer_part = re.sub(r'\D', '', match.group(1))
        fraction = match.group(2) or '00'
        fixed_string = f'{integer_part}.{fraction}'
        return Decimal(fixed_string)
    
    
    tests = {
        '0': Decimal('0.0'),
        '1000': Decimal('1000.0'),
        '10.00': Decimal('10.0'),
        '10,00': Decimal('10.0'),
        '1 000': Decimal('1000.0'),
        '1,000,000.00': Decimal('1_000_000.00'),
        '1000 рублей 90 копеек': Decimal('1000.90'),
    }
    
    for inp, res in tests.items():
        print(inp, end=': ')
        try:
            actual_res = string_to_sum(inp)
        except ValueError as err:
            print('Exception: ', err)
        else:
            if res != actual_res:
                print('Mismatch, got', actual_res)
            else:
                print('OK')
    Ответ написан
    Комментировать
  • В каком виде, хранятся записи в БД, подобные постам в соц.сетях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Современная соц-сеть - это уникальная софтварная архитектура которая строилась индивидуально.
    Вряд-ли вы сможете ее просто повторить имея mysql/php/nginx.

    VK/Facebook имеют свои технологии кеширования контента в основном построенные на материализации
    страниц. Базы данных обычно - не-реляционные. Модель проектируется так чтобы не было joins между
    таблицами. И активно используются очереди сообщений. Вот в соц-сети Linked-In это было настолько
    важно что даже был создан отдельный программный продукт который сейчас называют Apache Kafka.

    Активно используются горизонтальное масштабирование. Сеть наращивает мощности просто путем подключения
    новых адресов в dns с балансом по географии, и запуска новых web-nodes и новых дисковых реплик хранилищ для картинок и текстов постов.

    Поэтому вопрос в каком виде хранятся записи - тут не важен. Тут важно чтоб кеши обновились синхронно с событием поста например.
    Ответ написан
    7 комментариев
  • Как st_intersects обработать один столбец?

    freeExec
    @freeExec
    Участник OpenStreetMap
    а так не должно быть

    Это только если не читать документацию и выключить логику.
    А у всех остальных равные фигуры пересекаются всегда, в каждой своей точке.
    Ответ написан
    Комментировать
  • Как работает данный алгоритм проверки числа на простоту и какой у него Big O??

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Это вроде как решето Эратосфена (только с багами).

    Этот цикл по идее помечает составными все числа, делящиеся на i (которое к этому моменту вроде как простое). Таким образом все составные числа должны быть помечены в массиве a.
    Тут есть оптимизация: помечаются только те числа, для которых i - делитель не больше корня. Иначе бы цикл был не от i*i а от i. Эту оптимизацию можно делать, потому что у каждого числа обязательно есть простой делитель не больше корня, а значит и такой цикл пометит все составные числа.

    Сложность тут O(n log(log n)) - Доказательство смотрите в википедии.
    Ответ написан
    Комментировать
  • Чем меньше символов, пробелов и пропусков в коде, тем лучше?

    Не правильно.

    Код должен быть читаем и понятен человеку. Причем, не только автору, но и «злому маньяку тим-лиду, который вооружен и знает, где вы живёте», как говорится в шутке программистов.
    Для этого пустые строки между блоками кода бывают полезны. Как и комментарии, и длинные осмысленные наименования переменных и фукций.
    Компилятор потом всё равно всё перелопатит по-своему в ацкие бинарные инструкции )

    Как форматировать код — договариваются. Есть общепринятые стандарты форматирования кода (coding style). Например, стандартный для PHP. Или принятый в компании AirBnB для JavaScript.

    Хороший-удобный редактор кода всегда подскажет, где накосячили со стилем вашего кода, почему, и как исправить.
    Ответ написан
    Комментировать
  • Какую key-value БД использовать с данными в 10 млрд строк записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.

    1) У меня устойчивое дежа-вю. Периодически в топик заходят люди с именно этим вопросом. Разница только в количестве. Кому 1 млрд. Кому 10. Можно также поискать и слинковать эти вопросы в один большой вопрос.

    2) MySQL который указан в тегах - нормально справляется с этой задачей. Он и не такое число строк
    умеет хранить. И если взять MariaDb - там есть куча новых engines которые можно крутить для тюнинга
    именно скорости чтения. Разумеется жертвуя чем-то другим. Транзакциями и записью например.

    3) Непонятно что такое минимальное время? Если использовать дисковую БД типа MySQL то деградация времени
    поиска будет примерно зависеть от логарифма количества строк. Тоесть деградация будет но очень медленно.
    Для 10 млрд индекс по key будет содержать порядка 4-5 уровней BTree дерева. Тоесть дисковой системе
    нужно будет сделать до 5 или до 6 рандомных чтений (если нужные данные лежат в таблице). Это достаточно
    быстро для того чтобы моргнуть глазом за это время. Рандомное чтение любого блока из магнитного диска
    класса SATA-3 занимает порядка 20 милисекунд. Тоесть для 5 уровней - это 100 милисекунд. Для дисков
    класса SSD и это время можно уже считать меньше милисекунды. Точно я не знаю надо мерять.

    Испортить это время может сетевой лаг который в данной задаче мы просто не учитываем. Считаем что сеть идеальна.

    4) Непонятно зачем здесь указан Redis. Его задача не хранить 10 млрд а хранить только горячие
    ключи по котороым идет очень частый доступ. Если автор хочет In-memory хранение - то время можно
    еще сильнее улучшить. Его можно свести практически до нуля (я вангую несколько микро-секунд)
    но придется прикупить планок памяти побольше и посчитать сколько памяти
    надо для 10 млрд key/values неизвестной длины. Вообще крутить регулятор в направлении
    микро-секунд нет особого смысла т.к. другие звенья вашего стека (приложение и сеть) могут
    быть на порядки медленнее а это вообще нивелирует всю пользу от такой оптимизации.
    Ответ написан
    41 комментарий
  • Почему тип dict не изолируется внутри класса?

    Vindicar
    @Vindicar
    RTFM!
    class Interface:
        a = 1
        b = dict()
        c = []

    Ты описал класс с тремя атрибутами класса. Не экземпляра, а именно класса.
    Три атрибута экземпляра описываются как
    class Interface:
        def __init__(self):
            self.a = 1
            self.b = dict()
            self.c = []

    А если тебе нужен эквивалент интерфейсов, почитай про typing.Protocol.
    Ответ написан
    Комментировать
  • Голосовой ассистент на c#. С чего начать? Что надо изучить? Как реализовать(это мой первый проект)?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если прям совсем с нуля писать, то следующие лет десять надо будет учить программирование, алгоритмы, кучу математики, вероятно нейросети. Но получится всё равно сильно хуже яндексовой Алисы, так как такие проекты в одиночку на коленке не пишут. Если же можно опираться на готовые решения, то стоит изучить документацию по открытым API существующих голосовых помощников и интегрировать своё приложение с одним из них.
    Ответ написан
    Комментировать
  • Какая книга по Python самая лучшая для новичков и продолжающих?

    @dmshar
    Да читайте хоть что-нибудь, а не торгуйтесь "а вот если я прочту книгу А то стоит-ли мне читать книгу Б". Читайте сначала ЛЮБУЮ книгу. Когда хоть-что-то будете понимать в теме - тогда уже сможете осмысленно судить одинаково-ли у них "информационное наполнение" или разное. И с умом выбирать из других книг (именно ДРУГИХ, а не ДРУГОЙ, потому-что этот процесс никогда не заканчивается, даже у профи) то, знаний чего вам будет недоставать при попытке написать очередной проект. У программистов этот процесс продолжается всю профессиональную жизнь.
    Да и не зачем искать "самую лучшую" книгу. Ищите ту, которая именно вам будет наиболее понятной (а это - очень индивидуальный вопрос).
    А пока вы не проекты пишете, а "книги читаете" - то читайте любую. Лучше Лутца. Нет- читайте то что уже есть под рукой.
    Ответ написан
  • Программирование и математика тесно связаны?

    @dmshar
    А откуда вы взяли список? Просто это очень малая часть того, что должны знать те, кто хотят себя называть специалистом по Data Science. Нет, конечно если под этим терминам понимать вызов методов fit() и predict() - тогда конечно, без знаний математики можно и обойтись. Это как есть фельдшер, а есть врач. Есть младший кодер, вызывающий указанную функцию, а есть тот, кто сам может подобрать метод а может - и усовершенствовать его. А кем быть - уж вам решать.
    6411ccaa240ed514912408.png
    Меня больше смущает наметившийся торг "а надо-ли учить математику или алгоритмы, а чего-нибудь кроме синтаксиса языка надо знать или так прокатит, а то я в математике не силен". Если что-то "не заходит" - то зачем себя напрягать? Есть куча профессий, где без всего этого можно обойтись. Когда найдете что-то что окажется действительно вашим - таких торгов не возникнет, а удовольствия в конечном итоге получите гораздо больше.
    Ответ написан
    2 комментария
  • Как узнать процент похожести текста?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    "Вчера на площади Свердлова попал под лошадь извозчика 8974 гр. О. Бендер. Пострадавший отделался легким испугом."
    "Сегодня на площади Свердлова попал под лошадь извозчика 1234 гр. О. Иванов. Пострадавший отделался легким испугом."
    Схожесть по словам 81% (13/16), но новости то разные.
    Вам надо выделять ключевые слова - тип происшествия, даты, фамилии, адреса, номера и модели автомобилей и т.п. и сравнивать по ним.
    Ответ написан
    Комментировать
  • Почему PyCharm и VS code по-разному реагируют на одинаковые файлы?

    Vindicar
    @Vindicar
    RTFM!
    Почитай, что такое относительный путь, и что такое рабочий каталог.
    Это, на минуточку, школьный курс информатики.

    Ты указываешь относительный путь к файлу при открытии, поэтому путь разрешается относительно текущего рабочего каталога. Разные IDE могут указывать разные каталоги как рабочие при запуске скрипта, не говоря уже о том, что при запуске скрипта из терминала рабочим может быть любой каталог.
    А ещё рабочий каталог может меняться во время работы скрипта.

    Так что если тебе нужен путь к файлу именно рядом со скриптом, строй этот путь сам, используя модули sys и pathlib (ну или os.path, если по-старинке).
    import sys
    import pathlib
    # каталог, в котором лежит скрипт
    APP_DIR = pathlib.Path(sys.argv[0]).parent.resolve()
    # файл в этом каталоге
    my_file_path = APP_DIR / 'Token.txt'  
    
    with my_file_path.open('rt') as f:  # получаем файловый объект, как обычно
        data = f.read()
    Ответ написан
    Комментировать
  • Подойдет ли mysql для работы с aiogram?

    mayton2019
    @mayton2019
    Bigdata Engineer
    При 700 наверное вообще любая БД подойдет.
    Но тут надо еще отметить что архитектура БД выбирается исходя из наиболее типичных запросов.
    Например для установления дружбы между людей в соц-сетях и для принятия маркетинговых решений
    берут графовую БД. Для хранения сета вариативных документов - берут Mongo. Для финансовых транзакций
    с историей - берут классические реляционные типа Oracle/PG.
    Ответ написан
    Комментировать
  • Почему возникает ошибка в запросе Sqlite3?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Потому что "check" - зарезервированное слово, если ты так назвал таблицу, то пиши в кавычках (апостроф)
    SELECT money FROM `check`
    Ответ написан
    Комментировать
  • Проблемы с локальной переменной в питоне?

    Vindicar
    @Vindicar
    RTFM!
    result = f'Уложите плазму в шокерную'
    Во-первых, от того, что ты присвоил переменной строку, в окне программы ничего не изменится.
    Во-вторых, у тебя этот result инициализируется только внутри этого if. Если условие if не выполнено, result не будет существовать, на что тебе питон и указывает.
    Ответ написан
    Комментировать