Данные не добавляются в базу данных, несмотря на наличие conn.commit()

#python-3.x #sqlite

#python-3.x #sqlite

Вопрос:

публикую здесь впервые, поэтому приношу извинения за плохое форматирование. Недавно я начал использовать SQLite3 и просмотрел руководства / инструкции, но, похоже, у меня не получается заставить его работать, в частности, добавление данных не фиксирует их в базе данных.

 import random, sqlite3

conn = sqlite3.connect('card.s3db')
cur = conn.cursor()
cur.execute("""CREATE TABLE card(
    id INT,
number TEXT,
pin TEXT,
balance INT DEFAULT 0
);""")
conn.commit()

card_number = ''.join([str(i) for i in number_list_copy])
pin = ''.join(["{}".format(random.randint(0,9)) for i in range(0, 4)])
cur.execute("INSERT INTO card (number, pin) VALUES (?, ?)", (card_number, pin))
conn.commit()
  

Я опустил некоторый код, но по сути card_number — это просто строка. Когда я выполняю

 cur.fetchall() 
  

или

 cur.fetchone()
  

Я получаю пустой список или none соответственно. Я также пробовал разные способы вставки данных и просмотрел некоторые темы здесь.

Спасибо!

Комментарии:

1. вы запрашивали какие-то данные раньше fetchall() ? например cur.execute("select * from card")

2. @bwt нет, я этого не делаю. Я ничего не делаю между ними в отношении базы данных, я также пытался поместить fetchall() сразу после commit() , но она по-прежнему пуста

Ответ №1:

insert Изменяет данные, но не дает результата.

Чтобы получить данные из базы данных, вы должны использовать select запрос.

Например :

 cur.execute("SELECT number, pin FROM card")
the_data = cur.fetchall()
  

В качестве примечания, вы, вероятно, захотите сделать id столбец первичным ключом :

 id INTEGER PRIMARY KEY  
  

Комментарии:

1. Большое вам спасибо 🙂