提交后,sqlite3表不可用,Operationalerror:没有这样的表

时间:2014-09-21 15:36:31

标签: python database sqlite

我创建了一个测试数据库,如下所示,它在同一个python脚本中工作正常。

import sqlite3 as db

conn = db.connect('test.db')
cursor = conn.cursor()
cursor.execute("drop table if exists temps")
cursor.execute('create table temps(date text, temp int)')
cursor.execute('insert into temps values("12/1/2011",35)')
cursor.execute('insert into temps values("13/1/2011",45)')
cursor.execute('insert into temps values("14/1/2011",42)')
cursor.execute('insert into temps values("15/1/2011",39)')
cursor.execute('insert into temps values("16/1/2011",41)')
conn.commit()

conn.row_factory = db.Row
cursor.execute('select * from temps')

rows= cursor.fetchall()
for row in rows:
    print ("%s %s" % (row[0], row[1]))

conn.close()

但是当我通过不同的脚本访问同一个数据库时,我能够打开一个连接但是当我尝试访问temps表时它会显示错误。

import sqlite3 as db
conn = db.connect('test.db')
cursor = conn.cursor()
conn.row_factory = db.Row
cursor.execute("select * from temps")
rows=cursor.fetchall()
for row in rows:
    print ("%s %s" % (row[0], row[1]))

错误:

    cursor.execute('select * from temps')
sqlite3.OperationalError: no such table: temps

1 个答案:

答案 0 :(得分:1)

您需要向数据库提供正确的path,第一个脚本在与其运行的文件夹相同的文件夹中创建数据库。

为方便起见,我们假设您的第一个脚本在C:\DataBase中运行,当它运行时,您现在会在test.db文件夹中看到一个文件DataBase。此文件是您的sqlite3数据库。要从同一台计算机上的另一个python脚本访问它,您需要:

import sqlite3 as db
conn = db.connect('C:\DataBase\test.db')
cursor = conn.cursor()
conn.row_factory = db.Row
cursor.execute("select * from temps")
rows=cursor.fetchall()
for row in rows:
    print ("%s %s" % (row[0], row[1]))

否则,您可能已经注意到第二个脚本只会在其运行的文件夹中创建一个新的数据库文件test.db