Как сделать так, чтобы юзер каждый раз не добавлялся в БД? Делал и проверки и всё что угодно, всеравно.. Помогите пожалуйста.
Эту проверку можно избежать, если в бд добавить уникальный индекс - query = "CREATE UNIQUE INDEX User ON table(columns)"
with self.connection: res = self.cursor.execute('SELECT * FROM users WHERE user = ?', (username,)).fetchall() if res == []: add user to db else: pass Code with self.connection: res = self.cursor.execute('SELECT * FROM users WHERE user = ?', (username,)).fetchall() if res == []: add user to db else: pass
import sqlite3 import telebot conn = sqlite3.connect("database.db") c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS users (user_id INTEGER,money INTEGER)''') conn.close() bot = telebot,TeleBot("TOKEN") @bot.message_handler(commands=["start"]) def message_handler(message): conn = sqlite3.connect("database.db") c = conn.cursor() try: # ЕСЛИ ПОЯВИТСЯ ОШИБКА ЗНАЧИТ ТАКОЙ user_id УЖЕ ЕСТЬ И ПОВТОРНО СОЗДАВАТЬ НЕ НАДО result = c.execute(f"SELECT * FROM users WHERE user_id={message.chat.id}").fetchone() print(result[1]) except: c.execute("INSERT INTO users VALUES(?,?)",(message.chat.id,0)) conn.commit() conn.close() Code import sqlite3 import telebot conn = sqlite3.connect("database.db") c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS users (user_id INTEGER,money INTEGER)''') conn.close() bot = telebot,TeleBot("TOKEN") @bot.message_handler(commands=["start"]) def message_handler(message): conn = sqlite3.connect("database.db") c = conn.cursor() try: # ЕСЛИ ПОЯВИТСЯ ОШИБКА ЗНАЧИТ ТАКОЙ user_id УЖЕ ЕСТЬ И ПОВТОРНО СОЗДАВАТЬ НЕ НАДО result = c.execute(f"SELECT * FROM users WHERE user_id={message.chat.id}").fetchone() print(result[1]) except: c.execute("INSERT INTO users VALUES(?,?)",(message.chat.id,0)) conn.commit() conn.close()
Ну и в какой орм он сможет разобраться? sqlalchemy? Не смеши, он в ней запутается только открыв документацию. А вообще то он даже до документации не дойдет, без шансов.
сколько тебя вижу - ты только срёшь в темках какие все хуевые, а помочь не можешь. По твоему каждый новичок должен уметь всё сразу? Ты так и не скинул свой гит, кстати, котрйы у тебя просили