调用函数时,在标头中指定的self.cur.execute(...)
中出现操作错误:
def get_synset(self, pos, sense, literal):
with self.conn:
self.cur.execute("SELECT id FROM wordnet_entry WHERE pos = '{}' AND sense = '{}' AND literal = '{}' LIMIT 1".format(pos, sense, literal))
synset_id = self.cur.fetchone()[0]
return Synset(self, synset_id)
我正在使用jupyter笔记本。该函数本身位于file.py中。可以通过导入访问
from dir import file.py
错误代码:
OperationalError Traceback (most recent call last)
47 with self.conn:
---> 48 self.cur.execute("SELECT id FROM wordnet_entry WHERE pos = '{}' AND sense = '{}' AND literal = '{}' LIMIT 1".format(pos, sense, literal))*
49 synset_id = self.cur.fetchone()[0]
50
OperationalError: near "n": syntax error
错误消息对我来说似乎模棱两可。
*编辑
我发布了错误的错误消息。它有一个额外的AND条件:
---> 48 self.cur.execute("SELECT id FROM wordnet_entry WHERE pos = '{}' AND sense = '{}' AND literal = '{}' LIMIT 1".format(pos, sense, literal))
答案 0 :(得分:0)
好吧,由于您没有使用绑定变量,而是简单地格式化字符串查询(这是个坏主意,因为它很容易允许SQL注入攻击),因此第一步可能应该是找出什么实际上是在这三个变量中。
简单:
print("SELECT id FROM wordnet_entry WHERE pos = '{}' AND sense = '{}' AND literal = '{}' LIMIT 1".format(pos, sense, literal))
在运行查询之前,希望可以告诉您有关该查询的所有信息,包括它是否格式错误。