Как сделать базу данных?

Питон:
@Cog.listener()
    async def on_message_new(self, message):
        user = await self.bot.get_user(message.from_id)
        reg = await basa.register.main.register()
        if reg is None:
            print(user.id)
            reg = await basa.register.main.register(user)
            await message.send(format(user.first_name) + ", добро пожаловать")
            return await reg


Sql:
class dbsql():
    pool: Pool = db_pool

    async def register(self):
        async with self.pool.acquire() as conn:
            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('INSERT INTO profile(uid) VALUES (uid)')
                else:
                    return await row


Ошибка:
reg = await basa.register.main.register(user)
TypeError: register() takes 1 positional argument but 2 were given

И когда я заносил в бд пользователей то у них создавалось по несколько баз, и uid у всех 0 почему то, user_id прям в SQL не смог перенести, ошибка похожая была только с user_id и в папке register
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
В параметрах метода register указан только self, который служит для обращения к полям/методам класса-родителя.
async def register(self):
При этом вы, при вызове этого метода, передаете в него параметр user, что недопустимо:
reg = await basa.register.main.register(user)
Именно поэтому и появляется ошибка:
TypeError: register() принимает 1 позиционный аргумент, но было задано 2

Чтобы это исправить нужно переписать метод так, чтобы он мог принимать соответствующий параметр и мог работать с ним.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы