2016-08-12 4 views
2

Я создаю простой класс для SQLite datadase, и когда я вставляю новую таблицу строк, это не изменяется.Вставить в sqlite 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

точно так же, как говорит polku. для транзакций базы данных, кроме запросов, вы должны использовать 'commit()' после 'execute()'. В вашем случае это, вероятно, будет 'self.db.commit()' в конце функции 'insert' –

+0

. Я добавлен commit(), но он все еще не работает – Rodion

ответ

1

Ваш метод getAll не возвращает заявление. Если вы добавите его, вы увидите, что таблица фактически изменилась:

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

Спасибо! Может быть, мне нужен перерыв – Rodion

Смежные вопросы