ALTER TABLE Sqlite: как проверить, существует ли столбец перед изменением таблицы?

Мне нужно выполнить в python SQL-запрос, который добавляет новый столбец в sqlite3.

проблема в том, что иногда он уже существует. Поэтому перед выполнением запроса мне нужно проверить, существует ли столбец уже.

Если это так, то я не могу выполнить запрос.

есть ли способ сделать это в SQLite? Или мне нужно сделать это через блок try-catch в коде python?

большое спасибо заранее!

2 ответов


вы можете получить список столбцов для таблицы с помощью следующего оператора:

PRAGMA table_info('table_name');

более подробная информация о командах pragma доступна в веб-сайт sqlite


жалко

conn = sqlite3.connect(':memory:')
c = conn.cursor()
try:
    c.execute('ALTER TABLE mytable ADD COLUMN newcolumn;')
except:
    pass # handle the error
c.close()

является лучшим выбором, чем строительство особый случай запросы.

вы можете обернуть вышеуказанный код в функцию AddColumn(курсор, таблица, столбец), чтобы вы могли его повторно использовать,
плюс это сделает код более читаемым.