Задать вопрос
  • Как получить числовой массив из базы данных?

    @o5a
    Dmitry, так понятнее. Насколько понял, хотите делать динамический запрос в зависимости от набора выбранных параметров. Тогда или как предложили выше, через pandas (сначала запросить весь массив данных, затем отфильтровать по этим параметрам), или же подставлять эти значения в сам запрос.
    cur.execute("select поле_значения from нужная_таблица where year = %s and month = %s and station = %), (year, month, station)).fetchall()

    Т.е. в запросе указываем названия столбцов в самой таблице БД и вторым параметром передаем соответствующие значения, которые выбрал пользователь. На выходе получаем вложенный список значений, удовлетворяющих данному фильтру. Который потом можете просто преобразовать в обычный список.
  • Как получить числовой массив из базы данных?

    @o5a
    Не совсем понятно, чего именно хотите. Если просто обращаться к результатам запроса в БД по именам полей, то можно указать использовать курсор в виде словаря - для Pg https://www.psycopg.org/docs/extras.html#dictionar...
    cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
    rows = cur.execute(...).fetchall()
    for row in rows:
        print(row['название_поля'])
  • Почему получаю ошибку Security token is invalid для donation alerts?

    @o5a
    А откуда вот такое взялось?
    access_token = r[token]
    token - это же строка с самим токеном.

    Видимо предполагалось так?
    access_token = r['access_token']
  • Как произвести сортировку в таблице SQLite3, после удаления записи?

    @o5a
    andishub, значит я правильно понял, для чего это потребовалось. Приведенный row_number как раз и решает вашу проблему. Она как раз и используется в SQL для вывода порядковой нумерации данных. Лучше делать через нее, не стоит городить "i+="
  • Как произвести сортировку в таблице SQLite3, после удаления записи?

    @o5a
    В комментариях уже ответили верно, что первичный ключ сделан не для того, чтобы идти по порядку без пробелов. Его задача - поддержка уникальности. Но хотелось бы узнать, а для чего вообще захотели пересортировывать эти номера?
    Если была цель - выводить их как номера строк, то для этого в SQL есть отдельные функции, которые нумеруют строки по порядку (без пробелов), причем нумерация может быть разная в зависимости от поля сортировки.
    https://www.sqlitetutorial.net/sqlite-window-funct...
    Т.е. в вашем случае может быть так
    select id, name, 
    row_number() over(order by id) rn_1, -- порядковый номер при сортировке по id
    row_number() over(order by name) rn_2, -- но можно и при сортировке по именам
    from table_name

    Так что не нужно пытаться поддерживать порядок внутри самой таблицы, его получите при запросе данных из нее.
  • Почему функция re.search не возвращает None при пустой строке и как придать False значение пустому выводу от re.search?

    @o5a
    Стоило сразу описать, что хотели своей регуляркой находить (что должно было удовлетворять условиям, а что нет). Как уже заметили тут в комментариях, в текущем виде она по большому счету не работает. Но и подсказать, как исправить, толком нельзя, т.к. даже не указали, что хотели сделать.
  • Почему не работает render темплейта в docxtpl?

    @o5a
    utsiye, навскидку в целом все верно, должно работать. Попробуйте упростить код - сгенерируйте по своему шаблону и сразу сохраните. Возможно все-таки с тэгами накосячили.
  • Как вернуть стартовое значение счетчика?

    @o5a
    giorgio85, Судя по постановке задачи, я бы вообще предположил, что требуется всего лишь этими методами класса изменять значение аттрибута self.number +/- 1 (с проверками диапазона), я не вижу, где по постановке задачи требуется возвращать список диапазона значений, как Вы это делаете.
    А для вывода значения объекта можно прописать методы __str__/__repr__
    Т.е. примерно так:
    class Counter:
        def __init__(self, number=5, lower_limit=3, upper_limit=10):
            self.number = number
            self.lower_limit = lower_limit
            self.upper_limit = upper_limit
    
        # выведет значение счетчика
        def __repr__(self):
            return str(self.number)
    
        def increase_count(self):
            # делаем проверки диапазона, и если удовлетворяет, увеличиваем self.number
    
        def decrease_count(self):
            # делаем проверки диапазона, и если удовлетворяет, уменьшаем self.number
    
    obj = Counter()
    obj.increase_count()
    print(obj) # выведет 6
    obj.decrease_count()
    print(obj) # выведет 5
    obj.decrease_count()
    obj.decrease_count()
    obj.decrease_count() # ругнется на выход за диапазон
  • Ошибка " 'Sprite' object has no attribute 'x_end' ". Python Turtle. Как исправить?

    @o5a
    Max11pro, 1. Вы поместили инициализацию пути
    enemy1.set_move(-150, -50, -200, -50)
    врага внутрь цикла while, в результате после каждого шага они возвращаются назад, поэтому и "дергается". Это нужно делать до цикла.
    2. Координаты x врага наверное не такие предполагались? Больше похоже, что враги должны были пересекать путь игрока, т.е. там должно быть
    enemy1.set_move(-150, -50, 200, -50)
  • Как вывести значения в API VK?

    @o5a
    Судя по описанию, автору нужна только первая запись данных (2 строки он сам формирует).
    Cipo, достаточно просто указать, что берется первая запись, соответственно
    for p in data1[0]:
    или надежнее указать срез, чтобы не ушло в ошибку, если запрос придет без результатов:
    for p in data1[:1]:
    Или же вообще без цикла, если всегда только 1 запись и нужна:
    p = data1[0]
    И как ответили в других комментариях, лучше изначально сразу задать конкретный день данных параметрами запроса.
  • Почему код из книги Эрика Метиза "Изучаем Python" не работает?

    @o5a
    soremix, похоже зависит от версиии книги. Глянул какой-то выпуск перевода от 2017 года, и там все верно: отдельно изначальная функция (без 3-го параметра) и отдельно новая функция:
    def build_person(first_name, last_name, age=''):
        """Возвращает словарь с  информацией о человеке."""
        person = {'first': first_name, 'last': last_name}
        if age:
            person['age'] = age
        return person
    musician = build_person('jimi', 'hendrix', age=27)
    print(musician)

    Или же автор вопроса плохо читал и не заметил изменения в функции.
  • Почему код не работает (задание из книги)?

    @o5a
    Алан Гибизов, судя по постановке задачи, ему как раз и нужно было делать
    for name in favorite_places.items():
    он просто лишних скобок наставил, в результате словарь превратился в множество.
  • Почему не работает WHERE sql python?

    @o5a
    Vindicar, синтаксис в скобках нормальный. Ненормально тут было использовать одинарные кавычки, из-за этого и проблемы в том коде. Как уже заметили, или бэктики, или вообще без лишних символов, они тут не нужны.
  • Мне надо чтобы в 1 переменной было время а выводило время +15сек, что я делаю не так?

    @o5a
    Foxford12, В модуле datetime есть datetime в котором есть now()
    А есть timedelta.
    Поэтому когда делаете
    from datetime import datetime
    то импортуется только datetime.datetime, но не timedelta.
    Так что или импортируйте модуль полностью и обращайтесь datetime.timedelta или импортируйте его дополнительно отдельно
    from datetime import timedelta
    
    timedelta(seconds=1)
  • Почему не вставляется массив в SQLite?

    @o5a
    executemany предполагает на вход вложенный список, т.е. не просто список значений полей для одной строки, а изменение сразу нескольких строк одним запросом.
  • Почему с отрицательным кол-во хп персонаж жив?

    @o5a
    Помимо уже предложенных другими советов: не стоит пихать каждый раз запросы к базе, да и вообще подобные запросы лучше выделить в отдельные функции, которые и вызывать. Так будет выглядеть и нагляднее и универсальнее. Примерно так:
    # текущее здоровье
    def get_hp(user_id):
        return cursor.execute("SELECT hp FROM users WHERE id = ?", (user_id, )).fetchone()[0]
    
    # обновить здоровье
    def update_hp(user_id, hp):
        cursor.execute("UPDATE users SET hp = hp - ? WHERE id = ?", (hp, user_id, ))
        conn.commit()
    
    # и дальше уже их использовать
    hp = get_hp(user_id)
    if hp <= 0:
     ...
    if hp ...
        update_hp(user_id, attack_1)
  • SQLite3 не обновляет значения, что делать?

    @o5a
    Если при исполнении данного когда
    Ну вот ничего не происходит буквально
    , то данная функция просто не вызывается.
  • Sqlite - как добавить текст в ячейку бд, если в нем могут содержаться и одинарные, и двойные кавычки?

    @o5a
    ierarhsed, оно работает и с UPDATE тоже, просто подстановка переменных работает со значениями, а не с названиями идентификаторов (названия полей, самих таблиц). Но в нормально спроектированной таблице имена полей и не должны быть динамическими.
  • Некорректная работа sqlite. Работа с параметрами. Что мне делать?

    @o5a
    Balavnik,
    Пробовал параметры с %,та же история.

    Видимо невнимательно читали указанную документацию. Нужно не с '%' (это по сути то же самое форматирование), а именно передавать параметрами, смотрите '?'.
  • Как сделать активацию по спискам?

    @o5a
    Elacov_top, сделать внутри этого условия еще одно, только теперь проверять по списку команд.
    if any(alias in text for alias in VA_ALIAS):
        # перебирать команды из VA_CMD_LIST
        # для каждой команды делать аналогичную проверку вхождения в текст

    Попробуйте сами написать, если что подскажу.