2016-04-18 16 views
0

私はこのチュートリアルでpythonでsqlite3を学んでいますhttp://zetcode.com/db/sqlitepythontutorial/。私は「データを挿入する」の章を始めました。私はこのコードを実行しました:私はなぜ知らないPythonとsqlite3 - そのようなテーブルはありません

Error: no such table: Cars 

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

そしてこれが起こっ:

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ターミナルでこれを作りました。 Test.dbとスクリプトは同じ方向にあります。私はこの問題を捜し求めていました。私は理解できない解決策しか見つけませんでした。

+0

が私に役立ちます。 'CREATE TABLE'の前に' cur.execute( "DROP TABLE IF EXISTS Cars") 'を追加してみてください。 – fukanchik

+0

' sqlite3 test.db'でシェルを起動するか、 'sqlite3'を実行しただけで' .db'。 –

+0

ターミナルに "...>"と表示されます:( – upgrade11

答えて

0

私は最近pythonとsqliteを学んでいます。私が知る限り、データベースに加えた変更は、変更をコミットするまでメモリに残ります。また、データベースにアクセスする必要がなくなったらデータベースを閉じることもできます。 with con:のアプローチがデータベースをコミットしたり閉じたりするかどうかはわかりません。これらの行をスクリプトの末尾に追加します。

con.commit() 
con.close() 

これらのコマンドは、python sqlite3 documentation pageの2番目のコードで使用されています。

関連する問題