SQLite - 检查CREATE上的表格格式并根据需要删除

时间:2015-07-21 09:35:00

标签: python sqlite

假设我需要一个必须有两列(A TEXT,B TEXT)的表。 每次运行程序之前,我都要检查表是否存在,如果不存在则创建表。现在说已经存在具有该名称的表,但只有一列(A TEXT),或者可能(A INT,B INT)

所以一般来说,不同的列。 如何在CREATE查询中检查?如果有冲突将其备份并丢弃,则创建一个新的正确表。如果没有冲突 - 不要做任何事情。

我正在使用Python,顺便使用sqlite3。数据库暂时存储在本地,程序分发给多个人,这就是我需要检查数据库的原因。

目前我有

con = sqlite3.connect(path)
with con:
  cur = con.cursor()
  cur.execute('CREATE TABLE IF NOT EXISTS table (A TEXT, B TEXT);')

1 个答案:

答案 0 :(得分:1)

您可以使用pragma table_info来获取有关该表的信息,并使用结果检查您的列:

def validate(connection):
    cursor = connection.cursor()
    cursor.execute('PRAGMA table_info(table)')
    columns = cursor.fetchall()
    cursor.close()
    return (len(columns) == 2
            and columns[0][1:3] == ('A', 'TEXT')
            and columns[1][1:3] == ('B', 'TEXT'))

因此,如果validate返回False,您可以重命名该表并创建新表。