2016-04-18 22 views
0

Ich lerne sqlite3 in Python mit diesem Tutorial http://zetcode.com/db/sqlitepythontutorial/. Ich habe das Kapitel "Daten einfügen" gestartet. Ich lief diesen Code:Python und sqlite3 - keine solche Tabelle

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)") 

Dann machte ich dies in OS X Terminal:

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

Und dies geschah:

Error: no such table: Cars 

Ich weiß nicht, warum. Test.db und das Skript sind in der gleichen Richtung. Ich suchte nach diesem Problem und fand nur Lösungen, die ich nicht verstehe.

+0

funktioniert für mich. Versuchen Sie 'cur.execute (" DROP TABLE IF EXISTS Autos ")' vor 'CREATE TABLE' hinzuzufügen – fukanchik

+0

Stellen Sie sicher, dass Sie die Shell mit' sqlite3 test.db' starten oder wenn Sie gerade 'sqlite3' ausgeführt haben, die Sie zuerst' .open test .db'. –

+0

jetzt das Terminal zeigt "...>" :( – upgrade11

Antwort

0

Ich bin vor kurzem dazu gekommen, da ich auch Python und SQLite lerne. Soweit ich das beurteilen kann, bleiben die Änderungen, die Sie an einer Datenbank vornehmen, im Speicher, bis Sie Ihre Änderungen festgeschrieben haben. Sie möchten auch Ihre Datenbank schließen, wenn Sie nicht mehr darauf zugreifen müssen. Ich bin mir nicht sicher, ob der with con: Ansatz die Datenbank für Sie festlegt oder sogar schließt. Fügen Sie diese Zeilen am Ende Ihres Skripts hinzu.

con.commit() 
con.close() 

können Sie erleben diese Befehle auf dem python sqlite3 documentation page im zweiten Code Klappentext verwendet wird.

Verwandte Themen