Как сделать проверку существования записи в sqlite3?
Видел подобный вопрос, но не смог найти нужного ответа.
Задача:
При вызове функции def scoreupdater(chatid), нужно создавать в таблице строчку вида "'значение chatid' , 0 , 0 , 0"
А затем обновлять значения этой строчки.
Сейчас моя функция выглядит так:
def scoreupdater(chatid):
con = sqlite3.connect('statsbase.db')
cursorObj = con.cursor()
cursorObj.execute("INSERT INTO stats (fromuserid, statpl ,statmn, k) VALUES(?,0,0,0)", [chatid])
cursorObj.execute("UPDATE stats SET statpl = statpl + 1 where fromuserid = ?" , [chatid])
con.commit()
con.close()`
Проще говоря, нужно добавить проверку над третьей строчкой функции, и если такое значение chatid уже где-то есть то игнорировать третью строчку. Так же знаю что можно задавать значения по умолчанию, но так и не понял как. Заранее спасибо.
Ответы (1 шт):
Автор решения: icYFTL
→ Ссылка
На будущее - используйте ORM. Рекомендую SQLAlchemy.
А так:
def is_chat_exists(chatid) -> bool:
con = sqlite3.connect('statsbase.db')
cursorObj = con.cursor()
return bool(cursorObj.execute(f'SELECT * FROM stats WHERE chatid={chatid};').fetchall())
Ну и засунем в ваш код:
...
cursorObj = con.cursor()
if not is_chat_exists(chat_id):
cursorObj.execute("INSERT INTO stats (fromuserid, statpl ,statmn, k) VALUES(?,0,0,0)", [chatid])
cursorObj.execute("UPDATE stats SET statpl = statpl + 1 where fromuserid = ?" , [chatid])
...