检查python中是否存在sql表

检查python中是否存在sql表,python,sqlite,Python,Sqlite,我正在为投票系统制作一个python应用程序。我正在使用sqlite3创建一个存储在用户机器本地的数据库 我需要一种方法来检查表是否存在,因为在运行应用程序时需要在每个用户的数据库文件上创建表,但是如果应用程序在表存在时运行,并且我只有一条创建表的语句,那么它将运行一个错误,因为表已经存在 下面是一些简化的示例代码 conn = sqlite3.connect('firefight') c = conn.cursor() if table 'info' exists: #do nothi

我正在为投票系统制作一个python应用程序。我正在使用sqlite3创建一个存储在用户机器本地的数据库

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

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

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)")

我认为这里有两种选择。首先,SQLite有一条语句,只有在表不存在时才会创建该表:

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

但是如果您想要一种更通用的数据库处理方法,您可以简单地执行一个常规的CREATETABLE语句,然后用Python处理异常。

我认为这里有两个选项。首先,SQLite有一条语句,只有在表不存在时才会创建该表:

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

但是,如果您希望使用更通用的数据库方式来处理此问题,只需执行常规的CREATE TABLE语句,然后用Python处理异常。

您可以执行以下SQL:

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

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

您可以执行以下SQL:

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

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

这也可以与插入一起使用吗?可以使用唯一约束阻止插入,但这是另一个主题。这也可以与插入一起使用吗?可以使用唯一约束阻止插入,但这是另一个主题。我得到sqlite3。操作错误:没有这样的表:我的表我得到sqlite3。操作错误:没有这样的表:我的表