0

私はPythonの例@ http://docs.python.org/2/library/sqlite3.html#sqlite3に従っています

import sqlite3

conn = sqlite3.connect("tweet.db")

c = conn.cursor()


for row in c.execute('SELECT * FROM stocks ORDER BY price'):
        print row

conn.close()

しかし、私が持っていない限り、行は印刷されません:

purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
             ('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
             ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
            ]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

同じデータベースを使用しており、選択する前にデータを挿入しました。

私は何を間違っていますか?

4

1 に答える 1

4

挿入をコミットする必要があります。

conn.commit()

トランザクションをコミットしたときにのみ、sqlite は行をデータベースに永続的に書き込みます。ドキュメントからの引用:

このメソッドは、現在のトランザクションをコミットします。このメソッドを呼び出さない場合、最後の呼び出し以降に行ったことは、commit()他のデータベース接続からは見えません。データベースに書き込んだデータが表示されない理由が気になる場合は、このメソッドを呼び出すのを忘れていないかどうかを確認してください。

または、接続分離レベルをに設定して、None変更を自動コミットすることもできます。

conn.isolation_level = None
于 2012-11-09T16:15:52.650 に答える