@James_Obry

Как «правильно» проверить наличие записи в таблице SQLite3?

Здравствуйте, у меня возник вопрос как грамотно проверить наличие записи в таблице базы данных SQLite3
Можно сделать так:
def check_exist():
with sq.connect(database_path) as con:
        cur = con.cursor()
        my_id = 'любой id' # переменная хранящая id записи нужного пользователя
        author_ids = [x[0] for x in cur.execute("select id from authors").fetchall()] # массив с id записей
        if my_id in author_ids:
            print('+')
        else:
            print('-')

Но если в таблице есть много записей то код будет тормозить

Можно ещё сделать так:
def check_exist():
    try:
        with sq.connect(database_path) as con:
            cur = con.cursor()
            my_id = 'любой id' # переменная хранящая id записи нужного пользователя
            author_ids = cur.execute(f"select id from authors where id = '{my_id}'").fetchone()[0]
            print('+')
    except:
        print('-')


В любом случае код неочень. Подскажите как сделать такую проверку правильно?
  • Вопрос задан
  • 6682 просмотра
Пригласить эксперта
Ответы на вопрос 2
А вот если бы начали с SQL, но знали бы, что существует оператор EXISTS
SELECT EXISTS(SELECT * FROM authors where id = ?) -- Вернёт true, если какие-то записи по запросу находятся

А если есть индекс по искомому полю, то со скоростью проблем быть не должно
Индекс создаётся при помощи запроса CREATE INDEX:
https://www.sqlite.org/lang_createindex.html
Ответ написан
Комментировать
Levman5
@Levman5
print(“Hello World!”)
cursor.execute("SELECT id FROM authors WHERE id = ?", (my_id ))
if cursor.fetchone() is None:
    # Если нету записи то код


Вот так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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