Задать вопрос
  • Как проверить пересечение SQL lite?

    @PavelMos
    Как теги хранятся в базе ? Если в виде перечисления в строке вроде 'eng, anime' и 'eng, history' то имхо только через обработку скриптом, который будет разбирать строку на теги.
    Правильней теги хранить не в виде строки а в виде 1 тег=1 столбец, а в строке значение True/False или 1/0.
    Тогда по двум выбранным записям можно сделать сумму по столбцу .
    Если тегов будет 1000, то использовать базу типа NoSQL, тк базы SQL имеют ограничение по столбцам.
  • Как решить проблему импорта?

    @PavelMos
    NbUser143, проверить можно через dir(config)
  • Как законектится к сайту через sqlite3?

    @PavelMos
    Тогда поищи инструкции как подключаться к тому типа базы что есть на виртуалке. Т.е. python mysql или python postgresql
    Схема везде одинаковая, ставишь и импортируешь библиотеку (если это требуется), подключаешься к базе с адресом, логином, паролем, создаешь команду, отправляешь команду в базу, читаешь результат в виде одной или нескольких строк и разбираешь его
  • Почему выходит ошибка таблица заблокирована?

    @PavelMos
    SoreMix, для SQL баз, которые не в локальном файле, а на сервере по такому-то адресу, тоже есть программы-менеджеры, из бесплатных, например, HeidiSQL. Они имхо удобнее веб-админок.
  • Как проанализировать данные в excel таблицах с последующим использованиям их на web сайте?

    @PavelMos
    Нужен язык программирования и модули к нему, которые читают Excel и разбирают форматирование конкретной ячейки.
    Например в питоне есть модуль openpyxl, тут есть примеры выдачи цвета ячейки bgColor
    https://stackoverflow.com/questions/46382638/readi...
    тут еще основы openpyxl на русском
    https://habr.com/ru/company/otus/blog/331998/
    официальный сайт
    https://openpyxl.readthedocs.io/en/stable/styles.html
  • Как в MySQL плюсовать значение в ячейке?

    @PavelMos
    Тогда проверку надо делать после каждого ответа на вопрос. Ответил на вопрос->посчитать кол-во правильных (на текущий момент) ответов в первой таблицы (select count ... from users .. where users.user_id=..), записать это во вторую таблицу по user_id (update us_answers .... set us_answers.num_right_answers = where us_answers.user_id=..
    переменную можно использовать локальную переменную в функции, которая будет обновлять вторую таблицу. Пользователь (добавлено - c user_id) ответил->вызов функции с аргументом user_id->функция читает первую таблицу, создаёт переменную, записывает её во вторую таблицу.

    Если за один проход, то см. про вложенные запросы. (SELECT count ... FROM users .. WHERE users.user_id=..) вернёт число которое затем будет вставлено в первый запрос.
    UPDATE us_answers .... 
    SET us_answers.num_right_answers =  (SELECT count ... FROM users .. WHERE users.user_id=..) 
    WHERE us_answers.user_id=..


    Для отладки запросов можно поставить программу вроде DB Browser (SQlite) или пользоваться чем-то вроде HeidiSQL если база запущена как веб-сервис локально или у провайдера.
  • Как в MySQL плюсовать значение в ячейке?

    @PavelMos
    venera060, можно через count. Здесь единицы, их можно и суммировать, и считать. Если были бы другие значения, тогда только считать count.
    чтобы он плюсовал значения в конкретной ячейке num_right_answers

    что значит плюсовал - увеличивал на единицу в одной таблице, если в другой появился новый правильный ответ по такому-то вопросу ? проще каждый раз проверять в первой текущее значение (число правильных) и перезаписывать его во вторую таблицу.
    1. узнать число правильных select count(*) from users where true=true AND юзер=...., сохранить это в переменной
    2. записать переменную во вторую таблицу "UPDATE users SET num_right_answers = x WHERE user_id=y"

    Советую почитать основы SQL тк сейчас даже по объяснениям не очень понятно, что в такой простой задаче нужно.
  • Как в MySQL плюсовать значение в ячейке?

    @PavelMos
    1. Сначала нужно брать значение в одной таблице, потом изменять вторую, или делать вложенный запрос, когда вместо значения будут скобки и в них новый запрос, возвращающий нужное значение.
    2. " WHERE user_id - в us_answers нет user_id, получается ссылка на другую таблицу
    3. Если в us_answers. num_right_answers нужна текущая сумма в users.true, то есть число единиц, это можно сделать оператором sum(users.true).
    тогда
    "UPDATE users SET num_right_answers = sum(users.true)"

    сюда же - в num_right_answers только одна строка ? Если нужны суммы ответов по каждому вопросу, то должна быть колонка номер вопрос - совпадает с номером в таблице вопросов, и колонка сумма. В таком случае, нужно в UPDATE добавлять WHERE num_right_answers.номер_вопроса=zzz
  • Ошибка - TypeError: 'function' object is not iterable?

    @PavelMos
    idkafksh, функция не возвращает значение же, а в for x in f к ней обращение без аргумента

    Надо просто f = message.text.split()[1] и затем работать с f, то есть перебирать f
    или
    def f(message):
        return message.text.split()[1] #скобки для return не нужны


    далее for x in f(аргумент типа message): ....
  • Как записать значения из numpy.ndarray в Dataframe?

    @PavelMos
    Подробнее ? По идее, если добавляются колонки с таким же число строк, наоборот, нужно, чтобы индексы были одинаковыми. Тут есть, правда, на инглише, примеры что будет происходить с индексами, которые отсутствуют в одной или нескольких соединяемых таблицах:
    https://pandas.pydata.org/pandas-docs/stable/user_...
    merging_append_ignore_index.png

    Можно наверное попробовать ignore_index=True добавить. Но проблем с вновь созданными двумерными массивами быть не должно, вроде
    df10=pandas.DataFrame.from_records(np.random.randint(0,100,size=(20, 9)), columns=['n1','n2','n3','n4','n5','n6','n7','n8','n9'])
    df10
    Out[362]: 
        n1  n2  n3  n4  n5  n6  n7  n8  n9
    0   51  88  34  25  44  94  72  82  76
    1   61   9  15  71  49  53  32  84  55
    2   84  70  90  84   8   6   7   6  59
    3    7  38  21  43  23  85  31  38  48
    4   33  99  84  42  20  70  99  52  97
    5   63  27  23  48   0  24  25  67  62
    6    3  60   7  38  66  55  84  68  92
    7   71  66   3  96  28  79  57  10  91
    8    4  83  64  46  56  46  61  68  23
    9   87  14  85  25  72  66  16  48  74
    10  67  38  36  79  68  13  60  15   6
    11  63  62  65  28  69  79  39  80  25
    12  44  10  44  55  30  53  85  98  35
    13  72  30   5  82  84  98  44  97  33
    14  30  53  35  83   9  79  24  64  36
    15  91  88  82  86  92   4  18  61  47
    16  31  29  84   3  18  70  51  94  63
    17  64  43  19  26  49  86   6  47  70
    18  27  91  23  51  96  32  86  79  89
    19  43  68  88  96  80  59  49  31  55
    df15=pandas.concat([df4,df10], axis=1)
    df15
    Out[364]: 
               0         1         2         3         4  ...  n5  n6  n7  n8  n9
    0   0.145538  0.148608  0.393149  0.167098  0.145607  ...  44  94  72  82  76
    1   0.145538  0.148608  0.393149  0.167098  0.145607  ...  49  53  32  84  55
    2   0.145538  0.148608  0.393149  0.167098  0.145607  ...   8   6   7   6  59
    3   0.145538  0.148608  0.393149  0.167098  0.145607  ...  23  85  31  38  48
    4   0.145538  0.148608  0.393149  0.167098  0.145607  ...  20  70  99  52  97
    5   0.145538  0.148608  0.393149  0.167098  0.145607  ...   0  24  25  67  62
    6   0.145538  0.148608  0.393149  0.167098  0.145607  ...  66  55  84  68  92
    7   0.145538  0.148608  0.393149  0.167098  0.145607  ...  28  79  57  10  91
    8   0.145538  0.148608  0.393149  0.167098  0.145607  ...  56  46  61  68  23
    9   0.145538  0.148608  0.393149  0.167098  0.145607  ...  72  66  16  48  74
    10  0.145538  0.148608  0.393149  0.167098  0.145607  ...  68  13  60  15   6
    11  0.145538  0.148608  0.393149  0.167098  0.145607  ...  69  79  39  80  25
    12  0.145538  0.148608  0.393149  0.167098  0.145607  ...  30  53  85  98  35
    13  0.145538  0.148608  0.393149  0.167098  0.145607  ...  84  98  44  97  33
    14  0.145538  0.148608  0.393149  0.167098  0.145607  ...   9  79  24  64  36
    15  0.145538  0.148608  0.393149  0.167098  0.145607  ...  92   4  18  61  47
    16  0.145538  0.148608  0.393149  0.167098  0.145607  ...  18  70  51  94  63
    17  0.145538  0.148608  0.393149  0.167098  0.145607  ...  49  86   6  47  70
    18  0.145538  0.148608  0.393149  0.167098  0.145607  ...  96  32  86  79  89
    19  0.145538  0.148608  0.393149  0.167098  0.145607  ...  80  59  49  31  55
    [20 rows x 16 columns]
  • Как записать значения из numpy.ndarray в Dataframe?

    @PavelMos
    Полина Подкуйко, значит нужен concat, можно прямо из примера брать
    https://pandas.pydata.org/pandas-docs/stable/user_...

    1. двумерный массив в dataframe, через numpy или df1=pandas.Dataframe.from_records(array1)
    2. одномерный массив, т.е. список, через
    df2=pandas.Dataframe.from_records({'y1_test':array2'}/
    и так же со вторым списком реальных значений, только с другим названием колонки, например, y2_test Если просто from_records, то будет датафрейм из одной строки по 20 столбцов, а нужно 1 столбец на 20 строк.

    Итого df1 - 5 колонок, 20 строк, df2 и df2 по 1 колонке, 20 строк.

    Совмещение:
    result=pandas.concat([df1,df2,df3], axis=1, sort=False)


    потом по желанию поменять порядок колонок, или сделать из реальных значений float как в тестовых

    df4=pandas.concat((df1, df2,df3), axis=1, sort=False)
    df4
    Out[329]: 
               0         1         2         3         4   n1  0
    0   0.145538  0.148608  0.393149  0.167098  0.145607  2.0  2
    1   0.145538  0.148608  0.393149  0.167098  0.145607  3.0  3
    2   0.145538  0.148608  0.393149  0.167098  0.145607  4.0  4
    3   0.145538  0.148608  0.393149  0.167098  0.145607  1.0  1
    4   0.145538  0.148608  0.393149  0.167098  0.145607  1.0  1
    5   0.145538  0.148608  0.393149  0.167098  0.145607  1.0  1
    6   0.145538  0.148608  0.393149  0.167098  0.145607  3.0  3
    7   0.145538  0.148608  0.393149  0.167098  0.145607  3.0  3
    8   0.145538  0.148608  0.393149  0.167098  0.145607  2.0  4
    9   0.145538  0.148608  0.393149  0.167098  0.145607  4.0  4
    10  0.145538  0.148608  0.393149  0.167098  0.145607  1.0  1
    11  0.145538  0.148608  0.393149  0.167098  0.145607  2.0  2
    12  0.145538  0.148608  0.393149  0.167098  0.145607  4.0  4
    13  0.145538  0.148608  0.393149  0.167098  0.145607  0.0  0
    14  0.145538  0.148608  0.393149  0.167098  0.145607  3.0  3
    15  0.145538  0.148608  0.393149  0.167098  0.145607  4.0  4
    16  0.145538  0.148608  0.393149  0.167098  0.145607  2.0  4
    17  0.145538  0.148608  0.393149  0.167098  0.145607  2.0  2
    18  0.145538  0.148608  0.393149  0.167098  0.145607  3.0  3
    19  0.145538  0.148608  0.393149  0.167098  0.145607  1.0  1


    конструкция
    df = pd.DataFrame(np.concatenate (pred_prob, pred, y_test), axis = 1)
    что делает ? Pandas создаёт датафрейм какой-то функцией, которая входит в класс DataFrame и вызывается после нее pd.DataFrame.from_xxx , т.е. from_excel, from_records.
  • Как записать значения из numpy.ndarray в Dataframe?

    @PavelMos
    Полина Подкуйко,
    первый это двумерный массив 20 строк по 5 элементов, второй и третий одномерный по 20 элементов, нужно 2 и 3 прилепить к первому в двух качестве столбцов ?
  • Почему появляется ошибка кода unsupported format character 'T' (0x54) at index 19?

    @PavelMos
    print("%s Wins, %s Lsoses, %s Ties" %(wins,losses,Ties))

    %s пропущен перед Ties
    Ties в данном случае не место, куда будет вставлена переменная Ties, а просто слово в тексте. Плейсхолдер переменной это %s.
  • Как записать значения из numpy.ndarray в Dataframe?

    @PavelMos
    Полина Подкуйко, пример первого и второго массива можно ?
    pandas может совмещать массивы с разными размерами, другой вопрос что получится в итоге.
  • AttributeError: 'str' object has no attribute 'message' Как исправить?

    @PavelMos
    А подумкать ? В питоне всё - объекты. У объекта есть функции (методы, у строки, например, есть методы .replace(), у файла .close()) и некие атрибуты, в которых записаны некие текущие значния. Узнать всё это можно с помочью objectx.__dir__
    Скрипт работает с объектами для ботов в телеграме. У этих объектов есть свои методы и атрибуты, описанные в документации. Например, x.message.from_user.id.
    Но!!!!!! Из-за ошибки программа к этому шагу в объект v помещает не некий объект, предусмотренный модулем telebot, а объект типа str. У которого никаких атрибутов message нет.

    Т.е., раз u перебирается из updates, надо посмотреть, что есть в updates и что делается в updates = bot.get_updates(new_offset)
  • Проверьте правильно ли решено задание в python?

    @PavelMos
    можно было, но т.к. это учебное задание я в развёрнутом виде написал чтобы понятней было
  • Почему pandas.dataframe.drop(index) приводит к превращению датафрейма в NoneType?

    @PavelMos Автор вопроса
    Спасибо. Вероятно, что-то напутал, т.к. до смены условия всё работало, возможно, кроме изменения условия поменял еще и строку с дроп и дописал inplace.
  • Почему не выполняется условие if в python3?

    @PavelMos
    не за что. Функцию выше написал проапдейтил коммент
  • Почему не выполняется условие if в python3?

    @PavelMos
    Это для сокращения. В with open (файл, режим) as ...
    после as задаётся "псевдоним/alias", под которым программа будет работать с этим файлом, открытом в нужном режиме.
    А получается, что псевдоним это check_domains, который уже ранее задан как новое имя файлаcheck_domains = 'check_' + sys.argv[1]
    Вместо for check_domain in check_domains нужно брать элементы из списка доменов, который передаётся в функцию save_list(file, domain_list)вторым аргументом

    и в самом скрипте разве не должен сначала составляться список а потом писаться в файл ? Тут же получается, что список при срабатывании if каждый раз в текущем виде пишется в файл. Теоретически, при последнем шаге файл будет правильным, потому что список к этому временим будет полным, но так нет смысла делать, надо писать после обработки списка.

    if (check_domain(domain) == 1):
        domain_list.append(domain)
        save_list(check_domains, domain_list)


    А функция наверное так должна выглядеть

    def save_list(file, domain_list): #на входе имя файла, список доменов для записи
        with open(file, 'w') as f:
            for item in domain_list:
                f.write('%s\n' % item)
    #закрывать файл после записи не надо, конструкция with open сама его закроет