Python SQLite3 - 循环填充第一列

时间:2015-11-28 01:09:47

标签: python python-3.x sqlite

使用Python3我试图读取一个文本文件并填充SQLite3表的第一列。 for循环和执行组合提供错误,我不太清楚出了什么问题。

import sqlite3
WORDLIST = 'words.txt'   #list of words only

con = sqlite3.connect('dict.db')
cursor = con.cursor()
cursor.execute('DROP TABLE IF EXISTS dict')
cursor.execute('CREATE TABLE dict(word text, part text, definition text)')
con.commit()

with open(WORDLIST,'r') as dictionary:
    for each_word in dictionary:
        print(each_word)
        cursor.execute('INSERT INTO rainbow_table VALUES (?)',(each_word,))

输入文件words.txt非常简单

Cat
Bruno
Movie
Truth

我还没有能够纠正运行时错误:

Traceback (most recent call last):
  File "C:/dictdb.py", line 12, in <module>
    cursor.execute('INSERT INTO dict_table VALUES (?)',(each_word,))
sqlite3.OperationalError: table dict_table has 3 columns but 1 values were      supplied

1 个答案:

答案 0 :(得分:1)

正如错误所示,数据库期望将3个值插入到您的表所具有的3列中,因为您没有指定要插入的列。根据此link,如果您只想插入三个值中的一个,则必须使用以下语法指定所需的列:

INSERT INTO dict_table (word_text) VALUES (?)