【发布时间】:2013-03-29 15:12:44
【问题描述】:
我正在尝试使用 python 创建一个 sqlite3 表。我的代码如下:
def initDb():
database = 'index.db'
conn = sqlite3.connect(database)
cur = conn.cursor()
# Initialize database
cur.execute('PRAGMA foreign_keys = ON')
cur.execute('DROP TABLE IF EXISTS modules')
cur.execute('DROP TABLE IF EXISTS files')
cur.execute('DROP TABLE IF EXISTS modulesfiles')
cur.execute(
'''CREATE TABLE modules (
id INTEGER PRIMARY KEY AUTOINCREMENT,
label TEXT UNIQUE NOT NULL
)'''
)
cur.execute(
'''CREATE TABLE files (
id INTEGER PRIMARY KEY AUTOINCREMENT,
filename TEXT UNIQUE NOT NULL
)'''
)
cur.execute(
'''CREATE TABLE modulesfiles (
module INTEGER UNIQUE NOT NULL,
file INTEGER UNIQUE NOT NULL,
PRIMARY KEY (module,file),
FOREIGN KEY (module) REFERENCES modules(id) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (file) REFERENCES files(id) ON UPDATE CASCADE ON DELETE CASCADE
)'''
)
cur.close()
return conn
if __name__ == '__main__':
conn = initDb()
conn.commit()
conn.close()
此代码在我第一次运行并创建数据库时运行良好。但是,如果我再次运行它,我会收到以下错误:
cur.execute('DROP TABLE IF EXISTS files')
sqlite3.OperationalError: no such table: main.modules
我不知道出了什么问题。有人可以帮忙吗?
【问题讨论】:
标签: python-2.7 sqlite