Задать вопрос
@d1n0z4ur

В peewee не сохраняется запись только в одном Table. В чём дело?

Сохраняется только часть "c", хоть я и делаю точно тоже самое, часть "u" меняется, но в базе оно не сохраняется. Когда ставлю .save(force_insert) выдаёт ошибку:

UNIQUE constraint failed: Users.id

Код(с разных файлов разные блоки):

# main.py
#  self.event.text.lower()[15:] - id пользователя
#  self.db - база данных юзера
c = utils.getClanById(self.db.userId)
c.users = c.users.replace(f"{self.event.text.lower()[15:]}/", "")
c.save()
u = utils.getUserById(int(self.event.text.lower()[15:]))
u.user_clan = ""
u.save()

# utils.py
import time
from models import *
def getUserById(user_id):
    try:
        return User().get(User.userId == user_id)
    except:
        User(
            userId=user_id,
            name="",
            lastTimeUsedBonus=time.time() - 86400,
            money=0,
            GB=0,
            crowns=0,
            place=1000,
            user_clan="",
            clan_invites=""
        ).save()
        return User().get(vk_id=user_id)
def getClanById(user_id, buy=False):
    user_id = int(user_id)
    try:
        return Clan().get(Clan.owner_id == user_id)
    except:
        if buy:
            Clan(
                owner_id=user_id,
                name="",
                idd=0,
                users="",
                base=1,
                rating=0,
                coffers=0,
                wins=0,
                loses=0
            ).save()
            return Clan().get(Clan.owner_id == user_id)

# models.py
from peewee import *

dbu = SqliteDatabase('users and clans.db')


class User(Model):
    class Meta:
        database = dbu
        db_table = 'Users'

    userId = IntegerField()
    name = TextField()
    lastTimeUsedBonus = TimeField()
    money = IntegerField()
    GB = IntegerField()
    crowns = IntegerField()
    user_clan = TextField()
    clan_invites = TextField()


class Clan(Model):
    class Meta:
        database = dbu
        db_table = 'Clans'

    owner_id = IntegerField()
    name = TextField()
    idd = IntegerField()
    users = TextField()
    base = IntegerField()
    rating = IntegerField()
    coffers = IntegerField()
    wins = IntegerField()
    loses = IntegerField()


if __name__ == '__main__':
    dbu.create_tables([Clan, User])
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой 10 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы