无法将记录添加到没有“sqlite3.OperationalError: near “(”: 语法错误”

Can't add a record to a database without "sqlite3.OperationalError: near "(": syntax error"

提问人:NaMcA507 提问时间:11/30/2022 更新时间:11/30/2022 访问量:45

问:

我为我的程序制作了一个“虚拟”版本,仅包含前四个字段,但是一旦我添加了其余字段,此错误就会不断出现。我看到的任何其他人都遇到了这个问题,这是由于其他不适用于我的事情。我觉得这是我错过的小东西,如果有人能帮我解决这个问题,那将是一个很大的帮助,谢谢。我希望这足以让代码弄清楚。即使有人能告诉我问题出在这个代码之外,那也将是一个很大的帮助。


        connection = sqlite3.connect("TempDatabase.db")
        cursor = connection.cursor()

        sqlCommand = """
           CREATE TABLE IF NOT EXISTS OrderTb1N1
           (
           OrderID INTEGER NOT NULL,
           dateOrdered DATE,
           customerFirstname TEXT,
           customerSurname TEXT,
           customerPhoneNumber TEXT,
           collectionDate DATE,
           flavours TEXT,
           glaze TEXT,
           toppings TEXT,
           personalisation TEXT,
           orderSize TEXT,
           price REAL,
           paymentStatus TEXT,
           employeeName TEXT


           primary key (OrderID)
           )
        """

        cursor.execute(sqlCommand)
        connection.commit()
        connection.close()

由于数据库已经存在,我打算让这段代码添加额外的字段(来自“虚拟”测试)并允许我输入新记录。我删除了在虚拟测试期间所做的所有记录。根据错误输出,错误位于 'sqlCommand=' 中的某个位置。

python 数据库 sqlite 语法错误

评论

1赞 John Gordon 11/30/2022
问题可能是 后面没有逗号。employeeName TEXT
0赞 NaMcA507 11/30/2022
谢谢,我认为它不需要,因为它是最后一个字段,但它现在运行良好

答:

0赞 Salman Amin 11/30/2022 #1

您应该需要在 employeeName TEXT 之后使用逗号(,)。

正确的代码-

connection = sqlite3.connect("TempDatabase.db")
        cursor = connection.cursor()

        sqlCommand = "
           CREATE TABLE IF NOT EXISTS OrderTb1N1
           (
           OrderID INTEGER NOT NULL,
           dateOrdered DATE,
           customerFirstname TEXT,
           customerSurname TEXT,
           customerPhoneNumber TEXT,
           collectionDate DATE,
           flavours TEXT,
           glaze TEXT,
           toppings TEXT,
           personalisation TEXT,
           orderSize TEXT,
           price REAL,
           paymentStatus TEXT,
           employeeName TEXT,
           primary key (OrderID)
           )
        "

        cursor.execute(sqlCommand)
        connection.commit()
        connection.close()

评论

0赞 NaMcA507 11/30/2022
谢谢,我认为不需要它,因为它是最后一个字段,但没关系。这让我发疯了。它现在运行良好。