【发布时间】:2014-04-05 14:59:56
【问题描述】:
我收到此代码的 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
错误是:
sqlite3.OperationalError: near "IF": syntax error
这就是我定义表格的方式:
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()
如果我遗漏了一些简单的东西,我深表歉意。看了好几遍代码,网上搜索了一下,没看到语法错误在哪里。我将我的查询与我在网上找到的查询进行了比较,它似乎匹配。我能想到的唯一可能是错误的情况是,如果我的参数不正确,但我尝试更改它们但仍然无法正常工作。
提前感谢您的帮助。
-CJ
【问题讨论】:
-
这看起来可能会有所帮助:stackoverflow.com/questions/531035/… 我会尽力提供帮助,但我对数据库一无所知。
-
@CodyPiersall 感谢您的帮助,但没有成功。即使在您的链接中实现代码后,我仍然遇到语法错误。
-
对不起@cjuf,但我对 Sqlite 或任何其他数据库系统一无所知。希望有人能提供帮助。
标签: python sql sqlite python-2.7