使用SQLITE3模块时遇到错误

时间:2015-03-12 11:50:17

标签: python

我正在尝试使用SQL来创建一个目前我已创建此表的表

import sqlite3
conn = sqlite3.connect("Classes.db")
c = conn.cursor()
score = 5
name = ("Brad")
Class = 2
def tableCreate():
    c.execute("CREATE TABLE Class{}(ID INT, Name TEXT, Score (Out of 10) INT").format(Class)
def dataEntry():
    c.execute("INSERT INTO Class{} (Name, Score) VALUES (?,?)",
        (score,name)).format(Class)
    conn.commit()

当我运行tableCreate函数时,它返回错误:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    tableCreate()
c.execute("CREATE TABLE Class{}(ID INT, Name TEXT, Score (Out of 10)INT").format(Class)
sqlite3.OperationalError: unrecognized token: "{"

感谢您解决此错误的任何帮助

2 个答案:

答案 0 :(得分:2)

你应该替换

c = conn.cursor

c = conn.cursor()

以便使用游标对象进行查询。 c = conn.cursor允许您执行的所有操作都是创建数据库。如果您对常规数据库游标与用于查询的游标之间的差异感到困惑,this answer (和问题)可能会帮助您做出区分。

编辑:
对于您的第二个问题,您有一个括号问题,execute行应该正确封闭,如下所示:

c.execute("CREATE TABLE Class{}(ID INT, Name TEXT, Score (Out of 10) INT".format(Class))

答案 1 :(得分:0)

format方法是字符串对象的一种方法,即你把括号括号放得太早:

c.execute("CREATE TABLE Class{}(ID INT, Name TEXT, Score (Out of 10) INT").format(Class)

应该阅读

c.execute("CREATE TABLE Class{}(ID INT, Name TEXT, Score (Out of 10) INT".format(Class))