2016-04-18 58 views
0

我正在学习python中的sqlite3,本教程http://zetcode.com/db/sqlitepythontutorial/。我开始了“插入数据”一章。我跑这个代码:Python和sqlite3 - 没有这样的表

import sqlite3 as lite 
import sys 

con = lite.connect('test.db') 

with con: 

    cur = con.cursor()  
    cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT)") 
    cur.execute("INSERT INTO Cars VALUES(1,'Audi',52642)") 
    cur.execute("INSERT INTO Cars VALUES(2,'Mercedes',57127)") 
    cur.execute("INSERT INTO Cars VALUES(3,'Skoda',9000)") 
    cur.execute("INSERT INTO Cars VALUES(4,'Volvo',29000)") 
    cur.execute("INSERT INTO Cars VALUES(5,'Bentley',350000)") 
    cur.execute("INSERT INTO Cars VALUES(6,'Citroen',21000)") 
    cur.execute("INSERT INTO Cars VALUES(7,'Hummer',41400)") 
    cur.execute("INSERT INTO Cars VALUES(8,'Volkswagen',21600)") 

然后我OS X终端做出这样的:

sqlite> .mode column 
sqlite> .headers on 
sqlite> SELECT * FROM Cars; 

而发生这种情况:

Error: no such table: Cars 

我不知道为什么。 Test.db和脚本处于相同的方向。我正在寻找这个问题,我只找到了我不明白的解决方案。

+0

适合我。尝试在'CREATE TABLE'之前添加'cur.execute'(“DROP TABLE IF EXISTS Cars”)' – fukanchik

+0

确保你用'sqlite3 test.db'启动shell,或者你刚刚运行'sqlite3', .db'。 –

+0

现在终端显示“...>”:( – upgrade11

回答

0

我最近碰到这个,因为我也在学习python和sqlite。从我所知道的情况来看,对数据库所做的修改一直保留在内存中,直到您提交更改。当您不再需要访问数据库时,您还需要关闭数据库。我不确定with con:方法是否会为您提交或关闭数据库。将这些行添加到脚本的末尾。

con.commit() 
con.close() 

你可以看到在第二个代码Blurb的使用上python sqlite3 documentation page这些命令。

相关问题