170 похожих чатов

Всем привет ✌️ Вопрос по Peewee. Имеется следующее: class Person(Model):

name = CharField(unique=True)
class Meta:
database = db

with db:
Person.create_table()

firsty = Person(name='Johny Depp').save()

если дважды попробовать записать Джонни Деппа, в этом случае получаю ошибку:
peewee.IntegrityError: UNIQUE constraint failed: person.name

оно то и понятно... уникальный name, все дела. Вопрос:
как сделать что-то типа если уже записано - игнорируй
?

8 ответов

21 просмотр

Лови исключения своей базы, либо peewee и делай rollback except peewee.IntegrityError: db.rollback() Так же советую почитать про транзакции https://docs.peewee-orm.com/en/3.4.0/peewee/transactions.html

Ad1n1cA- Автор вопроса
Pavel Glukhov
Лови исключения своей базы, либо peewee и делай ro...

то есть, у пиви нет ничего подобному этому? INSERT OR IGNORE INTO t (name) VALUES ('a') UPD: Кажется я нашёл то, что мне нужно: firsty = Person.get_or_create(name='John1y Depp') в этом случае не возникает никаких ошибок. Но использую ли я .get_or_create по назначению?

Ad1n1cA
то есть, у пиви нет ничего подобному этому? INSERT...

Да, есть get_or_create(**kwargs) но здесь у тебя выполняется сначала select, если значение отсутствует, то выполняется insert. Обычно используется, если надо получить значение, но в случае отсутствия, создать его.

Ad1n1cA- Автор вопроса
Pavel Glukhov
Да, есть get_or_create(**kwargs) но здесь у тебя в...

и чтобы посоветовал делать? юзать get or create или ловить исключения?

Ad1n1cA
и чтобы посоветовал делать? юзать get or create и...

Если тебе нужно только создавать записи, то только ловил бы исключения. Например для postgres можно более точную ошибку ловить по коду ошибки и логировать, либо оповещать пользоваться о причинах. Если ты дальше в коде работаешь с этой записью, то использовал бы get_or_create.

Ad1n1cA- Автор вопроса
Pavel Glukhov
Если тебе нужно только создавать записи, то только...

хмм... Будет над чем подумать благодарю за инфу 🤝

Если ты сделаешь функцию например add_new_user будет не логично, если ты будешь получать значение, а не сообщать, что пользователь уже существует)

Ad1n1cA- Автор вопроса
Pavel Glukhov
Если ты сделаешь функцию например add_new_user буд...

Тут вот в чем штука: Будет база данных с ID, допустим фильмов. Пользователи смогут добавлять id фильмов в эту базу. То есть, получается, что например 10 разных пользователей могут добавить один и тот же id в базу.

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта