2016-08-12 9 views
2

私はSQLiteのdatadase用の単純なクラスを作成しています。新しいテーブルを挿入すると変更されません。 return文がありませんgetAllsqliteでの挿入Pythonはテーブルを変更しません

DB.py

import sqlite3 

class DB: 
    def __init__(self, **kwargs): 
     self.db = sqlite3.connect('passwods.db') 
     self.c = self.db.cursor() 
     self.c.execute('CREATE TABLE IF NOT EXISTS passwords (name, value)') 

    def insert(self, alias, cipher): 
     column = (alias, cipher) 
     self.c.execute('INSERT INTO passwords (name, value) VALUES (?,?)', column) 
     self.db.commit() 

    def get(self, alias): 
     pk = (alias,) 
     self.c.execute('SELECT * FROM passwords WHERE name=?', pk) 

    def getAll(self): 
     self.c.execute('SELECT * FROM passwords') 

インタラクティブシェル

>>> from DB import DB 
>>> db = DB() 
>>> db.insert('firstName', 'firstValue') 
>>> print(db.getAll()) 
None 
>>> 
+3

データを変更するときにコミットする必要があります。 – polku

+2

とまったく同じです。クエリ以外のデータベース "トランザクション"の場合は、 'execute()'の後に 'commit()'を使用する必要があります。あなたの場合は、 'insert'関数の最後に' self.db.commit() 'がある可能性があります。 –

+0

commit()を追加しましたが、まだ動作しません – Rodion

答えて

1

あなたの方法。追加すると、テーブルが実際に変更されていることがわかります。

def getAll(self): 
    self.c.execute("SELECT * FROM passwords") 
    return self.c.fetchall() 
+0

ありがとうございました!多分私は休憩が必要なのかもしれない – Rodion

関連する問題