我有一個名爲'test'的表,我通過Python代碼創建。從Python中插入null到Sqlite中
db = sqlite3.connect("mydb.db")
cur = db.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS test
(
"id" text primary key,
"field1" integer,
"fiedl2" integer,
"field3" text
)'''
)
我有一個文件,每行是一個JSON。我一行一行地讀取文件,並將每行的json中的數據插入表中。
file.txt的:
{'id':'abcde', 'field1': 10, 'field2': 20, 'field3': "hello"}
{'id':'asdf', 'field1': 20, 'field2': 5, 'field3': "world"}
{'id':'qwerty', 'field1': 1, 'field2': 2, 'field3': None}
如果JSON字段不具有價值,我想插入空到我的SQLite表。因此,如上面最後一行所示,如果field3沒有值,我就把None放在裏面,因爲這是我在其他相關問題中讀到的。
然而,當我插入如下:
for line in readfile:
line = ast.literal_eval(line)
columns = '", "'.join([i.strip() for i in line.keys()])
columns = "\"" + columns + '\"'
placeholders = ', '.join('?' * len(line))
sql = 'INSERT INTO test ({}) VALUES ({})'.format(columns, placeholders)
cur.execute(sql, ["'" + str(i) + "'" for i in line.values()])
db.commit()
我得到的,而不是空「無」,當我從SQLite的控制檯執行select語句。
sqlite> select * from test where id='qwerty' limit 1;
'qwerty'|1|2|'None'|
任何人都可以請幫我解決這個問題嗎?我使用Python 3.4
您是否考慮過測試值是否爲「無」? –