ALTER TABLE Sqlite:如何在更改表之前检查列是否存在?

Esa*_*abe 6 python sqlite exists alter

我需要在python中执行一个SQL查询,在sqlite3中添加一个新列.

问题是有时它已经存在.因此,在执行查询之前,我需要检查列是否已存在.

如果是,那么我将不执行查询.

在sqlite中有没有办法做到这一点?或者我必须通过python代码中的try-catch块来实现它?

非常感谢提前!

My *_* Me 14

您可以通过以下语句获取表的列列表:

PRAGMA table_info('table_name');
Run Code Online (Sandbox Code Playgroud)

有关pragma命令的更多详细信息,请访问sqlite网站

  • 这个问题被标记为“ python”,但这并未向您展示如何在Python中执行此操作 (2认同)

Nic*_*kis 13

IMO这个

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

是比构造特殊情况查询更好的选择.

您可以将上面的代码包装在AddColumn(游标,表,列)函数中,这样您就可以重用它,
并且它会使代码更具可读性.