chat_verification = {message.chat.id}
cursor.execute(f"SELECT chat_id FROM chat_id_table WHERE chat_id ='{chat_verification}' AND verification = 1")
cursor.execute("SELECT chat_id FROM chat_id_table WHERE chat_id = ? AND verification = 1", (message.chat.id, ))
check = cursor.execute(...
if check is True:
cursor.execute("SELECT chat_id FROM chat_id_table WHERE chat_id = ? AND verification = 1", (message.chat.id, ))
result = cursor.fetchone()
if result is None:
print('Нет такой строки')
else:
chat_id = result[0]
print('есть результат:', chat_id)
for i in cursor.fetchone("SELECT ID FROM user_info WHERE RANK = '1'"):
SELECT COUNT(*) FROM main WHERE user_id = ?
или SELECT EXISTS(SELECT * FROM main WHERE user_id = ?)
. Эти запросы гарантированно вернут одну строку с одним значением, 0 или 1. 0 - строка не существует, 1 - строка существует. SELECT * FROM table WHERE (1 = 1)
- тогда у тебя будет корректный запрос и при наличии, и при отсутствии параметров.f'AND ({paramname} = ?)'
(где paramname это имя параметра), а в список значений добавляешь в конце значение этого параметра. Если не передан - не делаешь ничего.SELECT * FROM table WHERE (1 = 1) AND (b = ?) AND (c = ?)
, и к ней список значений, которые sqlite должна будет подставить вместо ?. Читай документацию на метод execute(), как это сделать. <Cursor object at адрес-объекта-в-памяти>
SELECT 123;
, всё равно результат придётся вытаскивать через fetchone()/fetchall().SUM(id)
вернёт тебе сумму всех идентификаторов строк в таблице, а не количество строк в ней. Используй COUNT(*)
. CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE
);
PRAGMA foreign_keys = ON;
x = await asyncio.create_task(startq(message))
x = await startq(message)
asyncio.create_task(startq(message))
f'''INSERT INTO {table_name}(date, id, username)
VALUES('{date}', '{user_id}', '{username}')'''