Что эквивалентно системной таблице sqlite_master в mysql?

#mysql #sqlite

#mysql #sqlite

Вопрос:

Моя цель — просто использовать эту команду SQL, но перенести ее из sqlite в mysql :

cursor.execute(f"SELECT count(*) FROM sqlite_master WHERE type='table' AND name='{ctx.guild.id}_counters'")

В MySQL все по-другому, я видел это в Интернете, так что есть ли эквивалент FROM sqlite_master этого средства ИЗ каждой таблицы базы данных в MySQL.

Ответ №1:

Это было бы что-то вроде этого:

 SELECT COUNT(*)
  FROM information_schema.TABLES t
 WHERE t.TABLE_NAME = 'myname'
 

information_schema это внутренняя база данных MySQL, которая содержит метаданные о ваших базах данных. Таблицы TABLES и COLUMNS , вероятно, представляют для вас наибольший интерес.

Комментарии:

1. Похоже, это работает, спасибо, но в следующей строке, когда я это делаю int(check.fetchone()[0]) , я получаю эту ошибку: AttributeError: объект ‘int’ не имеет атрибута ‘fetchone’

2. Эта ошибка означает, что переменная check является целым числом при выполнении этой строки.

3. @carpii вы можете использовать fetchone с MySQL, хотя fetchall в большинстве случаев он будет более типичным.