Python Angular、Flask、mysql.connector编程错误:参数数量错误
我正在使用Angular、Flask和MySQL.connector连接到MySQL数据库: 这是我的python flask代码,用于处理插入新“电影”的post请求: 我知道这不是我的Angularjs,因为我的浏览器控制台显示内部服务器错误(500),所以我开始打印由flask和mysql.connector处理的insert语句:Python Angular、Flask、mysql.connector编程错误:参数数量错误,python,mysql,angularjs,flask,Python,Mysql,Angularjs,Flask,我正在使用Angular、Flask和MySQL.connector连接到MySQL数据库: 这是我的python flask代码,用于处理插入新“电影”的post请求: 我知道这不是我的Angularjs,因为我的浏览器控制台显示内部服务器错误(500),所以我开始打印由flask和mysql.connector处理的insert语句: ('INSERT INTO Movie (idMovie, MovieName, MovieYear) VALUES (%d, %s, %d)', (100,
('INSERT INTO Movie (idMovie, MovieName, MovieYear) VALUES (%d, %s, %d)', (100, 'Test', 2010))
这似乎是正确的
然而,我不断地
"Wrong number of arguments during string formatting")
ProgrammingError: Wrong number of arguments during string formatting
===============================================================================
感谢您的回答,对于那些想知道这就是我将代码切换到的内容的人来说,它是固定的:
@app.route("/addMovies", methods=['POST'])
def addMovies():
cnx = mysql.connector.connect(user='root', database='MovieTheatre')
cursor = cnx.cursor()
insert_stmt = (
"INSERT INTO Movie (idMovie, MovieName, MovieYear) "
"VALUES (%s, %s, %s)"
)
post = request.get_json()
data = (post['idMovie'], post['MovieName'], post['MovieYear'])
print(insert_stmt,data)
cursor.execute(insert_stmt,data)
cnx.commit()
cnx.close()
return data
SQL参数替换与字符串格式不同。您应该始终使用
%s
,即使对于整数也是如此。SQL参数替换与字符串格式不同。您应该始终使用%s
,即使对于整数也是如此。检查,它表示cursor.execute()方法会根据需要将内容转换为数据库能够理解的内容。似乎您应该只在字符串中使用%s
占位符,并让execute方法上的所有内容都执行。检查,它表示游标。execute()方法将必要的内容转换为数据库能够理解的内容。似乎您应该只在字符串中使用%s
占位符,而让execute方法上的所有内容都执行。您甚至不需要调用str()手动转换,因为类型转换是游标的任务。execute methodok true将删除该选项,然后我得到以下错误:TypeError:“int”对象不可调用您甚至不需要调用str()由于类型转换是游标的任务,因此手动执行。execute methodok true将删除该选项,然后我会收到以下错误:TypeError:“int”对象不可调用
@app.route("/addMovies", methods=['POST'])
def addMovies():
cnx = mysql.connector.connect(user='root', database='MovieTheatre')
cursor = cnx.cursor()
insert_stmt = (
"INSERT INTO Movie (idMovie, MovieName, MovieYear) "
"VALUES (%s, %s, %s)"
)
post = request.get_json()
data = (post['idMovie'], post['MovieName'], post['MovieYear'])
print(insert_stmt,data)
cursor.execute(insert_stmt,data)
cnx.commit()
cnx.close()
return data