我收到此代码的sql lite操作语法错误:
def checkIn(uname, title):
bookid = findBookID(title) #returns an int bookid given the title
print bookid
with libDB:
checkCur = libDB.cursor()
checkCur.execute(
"IF NOT EXISTS(SELECT 1 FROM Checks WHERE Username =? AND bookID =?) INSERT INTO Checks VALUES(?,?)",
(uname, bookid, uname, bookid))
checkCur.close()
mess = "OK::CHKIN::", uname, "::", title
return mess
错误是:
^{pr2}$我是这样定义表的:
with libDB:
checkCur = libDB.cursor()
checkCur.execute(
"CREATE TABLE Checks(bookID INTEGER, Username TEXT, FOREIGN KEY(bookID) REFERENCES Books(bookID),FOREIGN KEY(Username) REFERENCES Users(Username))")
checkCur.close()
如果我错过了一些简单的东西,我很抱歉。我查看了代码好几次,并在网上搜索,我没有看到语法错误在哪里。我把我的查询和我在网上找到的进行了比较,结果似乎是一致的。我唯一能想到的是,如果我的参数不正确,但我试图改变它们,我仍然无法使其工作。在
提前谢谢你的帮助。在
-中日韩
IF NOT EXISTS
与sqlite不兼容。您需要的insert语句如下:注意
NOT EXISTS
在WHERE
子句中。这种insert语句是compatible with sqlite。你可以玩sql fiddle here。在因此,在Python函数中,请尝试以下操作:
^{pr2}$相关问题 更多 >
编程相关推荐