#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. Большое вам спасибо 🙂