Не работает защита от ввода существующего значения в БД SQLite&Python
Создана функция, которая не дает вводить уже существующие значения в базу. До определённого времени она работала исправно, но сейчас выводит ошибку UNIQUE constraint failed: user_message.user_id
Вот код:
import telebot
import config
import sqlite3
from telebot import types
bot = telebot.TeleBot(config.TOKEN)
__connection = None
__data = None
def get_connection():
global __connection
if __connection is None:
__connection = sqlite3.connect('database.db', check_same_thread=False)
return __connection
def init_db(force: bool = False):
conn = get_connection()
c = conn.cursor()
if force:
c.execute('DROP TABLE IF EXISTS user_message')
c.execute("""
CREATE TABLE IF NOT EXISTS user_message (
id INTEGER PRIMARY_KEY,
user_id INTEGER NOT NULL,
user_name TEXT NOT NULL,
user_surname TEXT NOT NULL,
username TEXT NOT NULL
)
""")
conn.commit()
def set_args(user_id: int, user_name: str, user_surname: str, username: str):
conn = get_connection()
c = conn.cursor()
c.execute('INSERT INTO user_message (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)', (user_id, user_name, user_surname, username))
conn.commit()
global __data
if __data is None:
__data = c.fetchone()
return __data
@bot.message_handler(commands=['start'])
def send_welcome(message):
us_id = message.from_user.id
us_name = message.from_user.first_name
us_sname = message.from_user.last_name
user_name_tg = message.from_user.username
init_db()
if __data is None:
set_args(user_id=us_id, user_name=us_name, user_surname=us_sname, username=user_name_tg)
else:
print('Error! You already register in DB!')
print(__data)