我正在使用本教程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 :(得分:1)
我最近碰到了这个,因为我也在学习python和sqlite。据我所知,您对数据库所做的修改将保留在内存中,直到您提交更改为止。当您不再需要访问数据库时,您还希望关闭数据库。我不确定with con:
方法是否会为您提交甚至关闭数据库。将这些行添加到脚本的末尾。
con.commit()
con.close()
您可以在python sqlite3 documentation page上的第二个代码模糊中看到这些命令。