2016-11-17 165 views
1

我正在为投票系统制作python应用程序。我正在使用sqlite3创建存储在用户机器上的本地数据库。检查python中是否存在sql表

我需要一种方法来检查一个表是否存在,因为这些表需要在每个用户的数据库文件上创建时运行应用程序,但如果应用程序在表存在时运行,并且我只是创建一个语句表将会运行一个错误,因为该表已经存在。

下面是一些简单的示例代码

conn = sqlite3.connect('firefight') 
c = conn.cursor() 
if table 'info' exists: 
    #do nothing 
else: 
    c.execute("CREATE TABLE info(PRIMARY KEY id int, username text, password text)") 

回答

2

我觉得这里有两种选择。首先,SQLite的有这将创建表只有当它不存在一种说法:

CREATE TABLE IF NOT EXISTS info (PRIMARY KEY id int, username text, password text) 

但是,如果你想要一个更数据库通用的方法来处理这个问题,你可以简单地执行定期CREATE TABLE语句,然后处理Python中的异常。

+0

这也可以用于INSERT INTO? – Shniper

+0

您可以使用唯一约束停止插入,但这是另一个主题。 –

1

您可以执行此SQL:

select count(*) from sqlite_master where type='table' and name='table name' 

,如果你得到1,表中存在,否则不存在。

+0

我得到'sqlite3.OperationalError:没有这样的表:my_table' – NinjaFart