【问题标题】:Python and sqlite3 - no such tablePython 和 sqlite3 - 没有这样的表
【发布时间】:2016-11-21 05:50:57
【问题描述】:

我正在通过本教程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 和脚本方向一致。我一直在寻找这个问题,我只找到了我不明白的解决方案。

【问题讨论】:

  • 为我工作。尝试在CREATE TABLE 之前添加cur.execute("DROP TABLE IF EXISTS Cars")
  • 确保使用sqlite3 test.db 启动shell,或者如果您只是运行sqlite3,则首先使用.open test.db
  • 现在终端显示“...>” :(
  • 我发现它在两个文件夹中创建了 test.db:我的主文件夹和 python 脚本在哪里

标签: python database python-2.7 sqlite


【解决方案1】:

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

con.commit()
con.close()

您可以在python sqlite3 documentation page 的第二个代码简介中看到这些命令的使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 2022-01-21
    相关资源
    最近更新 更多