• Я хочу написать команду JSON python, но я встречаюсь с ошибкой. Как это исправить?

    AlexNest
    @AlexNest Куратор тега Python
    DF0rig, при чем тут объединение словарей?
    Как я уже сказал выше - для множества элементов вам нужен список из словарей.
    Порядок следующий:
    1. Прочитать содержимое файла и преобразовать в список словарей с помощью json.load.
    2. Сформировать новый словарь из данных по шаблону.
    3. Добавить словарь в список из п.1.
    4. Записать полученный список обратно в json-файл json.dump.
  • Я хочу написать команду JSON python, но я встречаюсь с ошибкой. Как это исправить?

    AlexNest
    @AlexNest Куратор тега Python
    DF0rig, зависит от того, что вам нужно.
    Если вам нужно хранить данные одного пользователя, то переменная data должна быть словарем:
    data = {
        "name": user_nickname,
        "password": rpass,
        "position": normal_position
        }

    Тогда к значениям можно будет обращаться напрямую. Так, как делали вы:
    data["name"] = str_user_nickname
    data["password"] = rpass
    data["position"] = normal_position

    Если нужно данные нескольких пользователей, то нужно использовать список:
    data = [
        {"name": user_nickname,
        "password": rpass,
        "position": normal_position
        },
        {"name": user_nickname1,
        "password": rpass1,
        "position": normal_position1
        },
        {"name": user_nickname2,
        "password": rpass2,
        "position": normal_position2
        },
      ]

    Тогда, чтобы получить данные из каждого словаря, нужно пройтись по data циклом, либо получив значение по индексу. В "структурах данных" по ссылке из ответа есть примеры того, как можно это делать.
    Важно! user_nickname/rpass/прочие обозначения из кода должны быть либо именами объявленных ранее переменных, либо конкретными значениями.
  • Нужно сделать нумерацию Рейтинга игроков в боте я новичок в этом деле, поможете?

    AlexNest
    @AlexNest Куратор тега Python
    У вас что-то конкретно не получается или вам нужен готовый код/алгоритм?
    Увы, но то тогда ваш вопрос является заданием.
    Единственный верный совет на текущий момент - не пытайтесь прыгнуть выше головы а изучайте python последовательно. Хотя-бы вот по этому. В идеале, впрочем, почитайте приведенную там литературу (разве что у Лутца уже есть 5-е издание), для понимания принципов работы с языком.
  • Где я поймал invalid syntax?

    AlexNest
    @AlexNest Куратор тега Python
    1.Оформите код советующим тегом (правило 3.8).
    2.Приведите полный текст ошибки.
  • Как при выполнении условия(If) запустить отдельный готовый скрипт?

    AlexNest
    @AlexNest Куратор тега Python
    slymee, с помощью ключевого слова import.
    А если серьезно - почему бы, если вы только начли учить, не почитать какой-нибудь учебник?
    Ну или, если на учебник нет времени, то почему бы не загулить пункты?
    Пример: python импорт функции из другого файла
  • Как сделать вывод имени с SQL | Aiogram?

    AlexNest
    @AlexNest Куратор тега Python
    Alexndrev,
    В таком случае - это комплексная проблема, требующая, по-факту реализации схемы снуля.
    Прежде всего, нужно идентифицировать пользователя исключительно по неизменяемым данным, т.е. по его telegram-id (либо его id внутри группы, как в дискорде. Честно говоря, с ТГ я почти не работал, поэтому не могу сказать, как здесь это реализовано). В целом, вы делали шаги в эту сторону, однако есть несколько "но":
    • Поле id должно быть уникальным. В доках sqlite есть пример как сделать поле таковым. Добавить одного и того-же пользователя два раза уже не получится.
    • Создавать запись о юзере при его первом добавлении в группу. Тут два варианта - предварительно проверять, есть ли соответсвующие данние и если да, то ничего не делать. Альтернативным вариантом будет обработка исключений (напомню, id - уникален и при попытке повторно добавить идентичное значение, драйвер sqlite выдаст ошибку).
    • То, как вы обновляете - неверно и крайне затратно по ресурсам. Обновлять значения можно одним запросом:
    UPDATE users SET rep = rep * 2 WHERE id = 4 -- rep = rep * 2 здесь можно производить любые базовые мат.действия (сложение, вычитание, умножение и деление).

    Ники можно хранить как в базе, так и получать из ТГ на основе id

    Ну и как дополнение - нормализация баз данных. К сабжу отношения не имеет, но в целом полезная вещь.
  • Как сделать вывод имени с SQL | Aiogram?

    AlexNest
    @AlexNest Куратор тега Python
    Alexndrev, ну и? Скрины это хорошо, но без кода, результатом выполнения которого являются эти скрины и описания того что так/не так, не очень понятно, чего вы ожидаете.
    Тем ни менее:
    На первом скрине видно, что вы пытаетесь вы печатаете cursor.execute() или какой-то другой его метод. В общем случае, когда вы выполняете запрос-выборку, по нему можно итерироваться, как и по итераторам/генераторам, но как и в случае с последними - напрямую получить данные из него нельзя. Нужно вызывать метод .fetchall()/.fetchone() Как в примере.
    По второму скрину - вообще ничего конкретного сказать нельзя. Ну, есть список экспертов, он выводится.
    Возможно, проблема в том, что у всех экспертов одинаковое имя. Тогда проблема в том, какие ограничения установлены на уровне базы для отсеивания дублирующихся имен (скажу сразу - из нет) и в том, каким способом вы проверяете при добавлении/обновлении значений, есть ли уже юзер с таким именем в базе (опять же, в приведенном коде таких проверок нет).
  • Как сделать вывод имени с SQL | Aiogram?

    AlexNest
    @AlexNest Куратор тега Python
    Alexndrev, в таком случае проверьте - насколько правильно вы формируете запрос.
    В примере создал точно-такую-же как у вас таблицу и запрос, но с именем:
    пример
    import sqlite3
    with sqlite3.connect('db.sqlite3') as conn:
    	conn.execute("CREATE TABLE IF NOT EXISTS users(name TEXT, id INT, rep INT)")
    	conn.execute("INSERT INTO users VALUES('username0',1,2323)")
    	conn.execute("INSERT INTO users VALUES('username1',2,324)")
    	conn.execute("INSERT INTO users VALUES('username2',3,23443)")
    	conn.execute("INSERT INTO users VALUES('username3',4,43521)")
    	conn.commit()
    	cur = conn.cursor()
    	result = cur.execute("SELECT id, name, rep FROM users ORDER BY rep DESC LIMIT 10").fetchall()
    	result1 = cur.execute("SELECT * FROM users ORDER BY rep DESC LIMIT 10").fetchall()
    	cur.close()
    	print(result)
    	print(result1)

    Все работает отлично:
    [(4, 'username3', 43521), (3, 'username2', 23443), (1, 'username0', 2323), (2, 'username1', 324)]
    [('username3', 4, 43521), ('username2', 3, 23443), ('username0', 1, 2323), ('username1', 2, 324)]

    И да, как видите можно выбирать все значения с помощью *
  • Как мне это реализовать?

    Как мне это реализовать?

    Открою секрет, но путем разработки алгоритма написания соответствующего кода:
    • Задача преобразуется в набор минимально-возможных и максимально-четких подзадач.
    • На основе подздач из п.1 реализуются алгоритмы.
    • На основе алгоритмов пишется код.
  • Не могу найти драйвера для ноутбука?

    Не могу найти драйвера для ноутбука?

    Да, не можете. Это констатация факта, не вопрос. Обратите внимание на п.3.1 правил и в дальнейшем - задавайте вопросы более корректно.
    По сабжу:
    вариант 1: google -> toshiba satellite l655 1h7 драйвера
    вариант 2: Открываете диспетчер устройств -> смотрите название модулей -> находите в том-же гугле
    Ну и не забывайте, что 7-ка может автоматически ставить большую часть дров (кроме видяхи и специфических устройств).
  • Как получить JSON у отдельного поста?

    alapys,
    Из шаблона сделать запрос с помощью xmlhttprequest или fetch на указанный url после чего как-то обработаь.
    С другой стороны - я не очень понимаю, зачем получать json, если вы уже получили данные из представления.
  • Как получить JSON у отдельного поста?

    alapys,
    я думал, что нужно создать еще одну например отдельную страницу, /api/json-post на которую будет выводится данные о посте в формате json.

    Ну, конкретно для конкретного поста, если не подразумевается, например, приложение для мобилок, делать json излишне.
  • Как получить JSON у отдельного поста?

    alapys,
    одновременно переход на шаблон и запись json

    Запись json куда а главное зачем? Json обычно используют просто как удобный и структурированный способ передачи данных между одним кодом и другим. Например, для "бесконечной" погрузки контента (при пролистывании до определенного блока запускается JS-скрипт, посылающий запрос к серверу и получающий json с данными, который потом преобразуется в html разметку опять же силами js). Поэтому, по крайней мере для клиент-серверной системы вроде сайта понятие "запись json" нужно раскрывать чуть более подробно.
    получать pk и по нему строить json запрос на другой странице(/api/json-post)

    Тут тоже не очень понятно как трактовать:
    1.Нужно открывать новую вкладку/перейти на другую страницу, содержащую json?
    window.open('http://example.com');
    2. Динамически обновлять контент (о чем я уже писал выше и о чем подумал изначально)?
    Используйте js: xmlhttprequest/fetch/ajax.
    3.Выполнять какую-то логику (отправлять запрос к другому серверу/в мессенжер или что-то еще.)
    Тут сложно дать какой-то однозначный ответ - для запросов на python используют, в основном, requests. В остальном - нужно более четко формулировать задачу.
  • Как сделать базу данных?

    AlexNest
    @AlexNest Куратор тега Python
    Ну оно и логично. В приведенном вами коде нет ни запроса, который проверяет на основе данных юзера, есть ли запись в базе, ни запроса, который эти же данные вставляет. Вместо этого - есть какие-то заглушки:
    result = await cur.execute("SELECT * FROM profile WHERE uid")
    await cur.execute('INSERT INTO profile(uid) VALUES (uid)')

    Как правильно вставлять данные смотрите в документации по библиотеке.
    Вот пример для sqlite
  • Как сделать базу данных?

    AlexNest
    @AlexNest Куратор тега Python
    Artem4442, ну да. Здесь то вы юзера не указали:
    async def on_message_new(self, message):<br>
            user = await self.bot.get_user(message.from_id)<br>
            reg = await basa.register.main.register()
  • Как исправить "pymysql.err.ProgrammingError: Cursor closed"?

    AlexNest
    @AlexNest Куратор тега Python
    Artem4442, но это уже отдельный вопрос, касающийся структуры таблицы и запроса. Который, к слову, лучше опубликовать отдельно, приложив структуру базы (желательно в виде sql-кода, с помощью которого вы создавали ее. Если его нет - посмотрите, как вывести ее для вашей субд), пример запроса, который вы пытаетесь выполнить и какую ошибку выдает.
  • Как исправить "pymysql.err.ProgrammingError: Cursor closed"?

    AlexNest
    @AlexNest Куратор тега Python
    Artem4442, в ответе выше уже сказали - второй запрос нужно поместить внутрь блока with
    async with conn.cursor() as cur:
                    result = await cur.execute("SELECT * FROM profile WHERE uid")
                    row = await cur.fetchall()
                    if result == 0:
                        await cur.execute(f'INSERT INTO profile(uid) VALUES(uid)')
                    else:
                        return await row