Python 如何将url参数作为字符串元组传递给mysql查询

Python 如何将url参数作为字符串元组传递给mysql查询,python,mysql,flask,Python,Mysql,Flask,我有一个API端点,如下所示: http://127.0.0.1:5000/data?params= 西班牙语、意大利语、英语 这是我在myflask.py中的代码: @app.route("/data", methods=["GET"]) def my_api(): query = "SELECT * from tablex WHERE " params = request.args.get("params") if params: query += "col IN ('{}');".

我有一个API端点,如下所示:

http://127.0.0.1:5000/data?params= 西班牙语、意大利语、英语

这是我在myflask.py中的代码:

@app.route("/data", methods=["GET"])
def my_api():
query = "SELECT * from tablex WHERE "
params = request.args.get("params")

if params:
   query += "col IN ('{}');".format(params)
我在输出中期望的是以下查询:

“从表格X中选择*,表格中的列为('spanish'、'italian'、'english');”

但我得到的是

“从表格中选择*,表格中的col为('西班牙语、意大利语、英语');”

我也试过:

query+=“col IN({}”);”.format(“,”.join(params))

但是不起作用

也许这可以帮助您:

languages  = ['spanish','italian','english']
string = ','.join(['%s'] * len(languages))
print("SELECT * from tablex WHERE col  IN (%s)" % string,tuple(languages))

但我建议您更改过程的SELECT。

不要以这种方式执行sql查询。在Web上搜索“sql注入”以了解原因。永远不要相信你在请求中得到的东西。谢谢你的观点。您有什么建议或示例可以阻止这种注入吗?因为我在cursor.execute()中找到了所有内容,但我需要准备查询并传递给execute