假设我需要一个必须有两列(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);')
最佳答案
您可以使用 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
,您可以重命名该表并创建新表。
关于python - SQLite - 检查创建时的表格式并根据需要删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535378/