我正在尝试使用Python库sqlite3
来填充SQLite数据库。在此示例中,想法只是从文件中读取数据并填充数据库,但是,尽管似乎正在创建表,但数据库并没有增长,也没有向其中写入值。
我的代码如下:
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
答案 0 :(得分:1)
向表中添加行的SQL语法为:
INSERT INTO atable (id, f1) VALUES (?, ?);
UPDATE
将不执行任何操作,如果表中没有行。
如果要插入或替换现有行,则sqlite还支持INSERT OR REPLACE
命令。