代码不会将类别插入sqlite3 db

时间:2015-12-22 16:21:43

标签: python python-3.x sqlite

category声明

connection.execute('''
    CREATE TABLE category (
    cat_id              INTEGER PRIMARY KEY AUTOINCREMENT, 
    cat_name            TEXT NOT NULL
    );
''')

逻辑:

  for cat in categories:
        '''
        debugging only
        '''
        print(category)
        try:
            connection.execute("""
            INSERT INTO category
                (cat_name)
                VALUES (?) """, (cat)
            )     
        except:
            print('Error Occurred inserting category: {}'.format(cat))

我尝试打印出categories的值并得到我输入的内容:

 ['Valu1', 'Valu2', 'Valu3', 'Valu4']

当我执行时,它会命中except:块。我验证了category存在

有什么想法?

谢谢

3 个答案:

答案 0 :(得分:0)

在这部分

connection.execute("""
INSERT INTO category
    (cat_name)
    VALUES (?) """, (cat)
)     

你需要一个猫后的逗号,就像这样

connection.execute("""
INSERT INTO category
    (cat_name)
    VALUES (?) """, (cat,)
)     

所以这将是一个元组。

哦,并且在回答你关于如何获取错误消息的评论问题时,我将把它放在这里以便它将被正确格式化(当我将它放在缩进下面的注释中时):

except Exception as e:
    print('Error Occurred inserting category: {}'.format(cat), e)

答案 1 :(得分:0)

要检查两件事。首先是connection变量,实际连接或光标(c = connection.cursor())。其次,您忘记提交更改connection.commit()

答案 2 :(得分:0)

如果您没有错误消息则几乎没用。尝试打印except上的例外消息。

错误: sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.

添加(cat,)是正确的解决方案。

cur.execute("INSERT INTO category (cat_name) VALUES (?)", (cat,))