Python sqlite3和字符串格式 - 错误

时间:2017-07-06 17:06:16

标签: python-3.x sqlite string-formatting

这是我的代码:

title = "Importunate Widow"
conn = sqlite3.connect('parable.sqlite')
c = conn.cursor()
sqlite3.enable_callback_tracebacks(True)

c.executescript("""
            CREATE TABLE IF NOT EXISTS _index(
                title text NOT NULL,
                context text NOT NULL
                );

            CREATE TABLE IF NOT EXISTS {}(
                value int NOT NULL,
                number int NOT NULL,
                question text NOT NULL,
                choice1 text,
                choice2 text,
                choice3 text,
                choice4 text,
                answer text NOT NULL,
                explanation text,
                see text
                )""".format(title))

    c.executemany('INSERT INTO _index(title,context) VALUES(?,?)', index)

    c.executemany('INSERT INTO {}(value,number,question,choice1,choice2,choice3,choice4,answer,explanation,see) VALUES(?,?,?,?,?,?,?,?,?,?)'.format(title), quiz)
    conn.commit()
    conn.close()

这给了我:

 OperationalError    Traceback (most recent call last)
 /home/user/Hobby/Quiz/quiz_sqlite.py in <module>()
sqlite3.enable_callback_tracebacks(True)
     87 
---> 88         c.executescript("""CREATE TABLE IF NOT EXISTS _index(title text NOT NULL,context text NOT NULL);CREATE TABLE IF NOT EXISTS {}(value int NOT NULL,number int NOT NULL,question text NOT NULL,choice1 text,choice2 text,choice3 text,choice4 text,answer text NOT NULL,explanation text,check text )""".format(title))
     89 
     90         c.executemany('INSERT INTO _index(title,context) VALUES(?,?)', index)

OperationalError: near "Widow": syntax error

我基本上迭代多个文件并将数据插入以文件命名的表中。我在互联网上搜索过,没有任何内容。

我尝试了什么:

  1. 尝试在;
  2. 之前)之后添加"""
  3. 尝试在,
  4. 之后添加see text
  5. 尝试将列see的名称更改为refer
  6. 这一切都没有帮助!

    代码中的语法错误是什么?

1 个答案:

答案 0 :(得分:1)

您尝试使用Importunate Widow作为表名。您不允许在表格或字段名称中使用空格。