ALTER TABLE Sqlite: как проверить, существует ли столбец перед изменением таблицы? - PullRequest
6 голосов
/ 01 марта 2010

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

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

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

Есть ли способ в sqlite сделать это? Или я должен сделать это через блок try-catch в коде Python?

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

Ответы [ 2 ]

14 голосов
/ 01 марта 2010

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

PRAGMA table_info('table_name');

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

13 голосов
/ 01 марта 2010

ИМО это

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...