Я пытаюсь заполнить базу данных SQLite, используя библиотеку Python sqlite3
.В этом примере идея состоит в том, чтобы просто прочитать данные из файла и заполнить базу данных, однако, хотя создается впечатление, что таблица создается, база данных не растет и значения не записываются в нее.
приведенный ниже код:
import sqlite3
def update_db(c, key, val):
sql = ''' UPDATE atable SET f1 = ? WHERE id = ?; '''
c.execute(sql, (val, key))
def create_table(c):
sql = ''' CREATE TABLE atable (id text PRIMARY KEY, f1 integer DEFAULT 0); '''
c.execute(sql)
with sqlite3.connect('test.db') as conn:
c = conn.cursor()
create_table(c)
with open('file1.txt') as f1:
for line in f1:
l = line.strip().split()
update_db(c, l[0], int(l[1]))
conn.commit()
Этот код выполняется без ошибок, но при попытке выполнить запрос к этой базе данных, либо с Python:
with sqlite3.connect('test.db') as conn:
c = conn.cursor()
c.execute('SELECT * FROM atable;')
for row in c:
print(row)
, либо в командном интерфейсе SQLite:
$ sqlite3 test.db
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> SELECT * FROM atable;
sqlite> .tables
atable
sqlite>
вывод всегда пуст (но, похоже, таблица была создана правильно).Что я здесь не так делаю?
Файл 'file1.txt' для тестирования таков:
foo 2
bar 0
baz 1