Python(Flask,JayDeBeApi) RuntimeError: No matching overloads found for prepareStatement
Python(Flask,JayDeBeApi) RuntimeError: No matching overloads found for prepareStatement
如标题中所述,当我尝试执行准备好的语句时出现此错误。完整的错误是:
RuntimeError: No matching overloads found for prepareStatement in find. at native\common\jp_method.cpp:127
据我所知,可能是因为我正在尝试使用准备好的语句,所以编译器无法找到重载 ?占位符。
代码片段:
curs = self.dbconn.cursor()
sqlLogin = ("SELECT name,email FROM BENUTZER where name=? and email=?", ( benutzerObjekt.name,benutzerObjekt.email))
curs.execute(sqlLogin)
错误似乎发生在 curs.execute(sqlLogin),在调试时在回溯中显示给我。
我正在尝试使用存储在 benutzerObjekt.name 和 benutzerObjekt.email 中的 html 输入作为 select SQL 陈述。所以很可能是我的 SQL 语句或语句的执行有问题,在调试时带有下划线。我正在使用 db2.
提前致谢!
您需要将参数作为 cursor.execute
中的第二个参数传递。现在您的查询是两个项的嵌套元组,第一个是字符串,第二个是两个值的元组。
考虑分离函数调用的参数:
curs = self.dbconn.cursor()
# SINGLE STRING VALUE
sqlLogin = "SELECT name,email FROM BENUTZER WHERE name=? AND email=?"
# TUPLE OF TWO VALUES
vals = (benutzerObjekt.name, benutzerObjekt.email)
# PASS SQL AND PARAMS SEPARATELY
curs.execute(sqlLogin, vals)
或者,您可以使用星号解压缩嵌套元组,*
:
sqlLogin = (
"SELECT name,email FROM BENUTZER where name=? and email=?",
(benutzerObjekt.name, benutzerObjekt.email)
)
curs.execute(*sqlLogin)
如标题中所述,当我尝试执行准备好的语句时出现此错误。完整的错误是:
RuntimeError: No matching overloads found for prepareStatement in find. at native\common\jp_method.cpp:127
据我所知,可能是因为我正在尝试使用准备好的语句,所以编译器无法找到重载 ?占位符。
代码片段:
curs = self.dbconn.cursor()
sqlLogin = ("SELECT name,email FROM BENUTZER where name=? and email=?", ( benutzerObjekt.name,benutzerObjekt.email))
curs.execute(sqlLogin)
错误似乎发生在 curs.execute(sqlLogin),在调试时在回溯中显示给我。
我正在尝试使用存储在 benutzerObjekt.name 和 benutzerObjekt.email 中的 html 输入作为 select SQL 陈述。所以很可能是我的 SQL 语句或语句的执行有问题,在调试时带有下划线。我正在使用 db2.
提前致谢!
您需要将参数作为 cursor.execute
中的第二个参数传递。现在您的查询是两个项的嵌套元组,第一个是字符串,第二个是两个值的元组。
考虑分离函数调用的参数:
curs = self.dbconn.cursor()
# SINGLE STRING VALUE
sqlLogin = "SELECT name,email FROM BENUTZER WHERE name=? AND email=?"
# TUPLE OF TWO VALUES
vals = (benutzerObjekt.name, benutzerObjekt.email)
# PASS SQL AND PARAMS SEPARATELY
curs.execute(sqlLogin, vals)
或者,您可以使用星号解压缩嵌套元组,*
:
sqlLogin = (
"SELECT name,email FROM BENUTZER where name=? and email=?",
(benutzerObjekt.name, benutzerObjekt.email)
)
curs.execute(*sqlLogin)