擅长:python、mysql、java
<p>我想到的第一种方法是手动生成查询:</p>
<pre class="lang-py prettyprint-override"><code>country = {
"col": col1,
"type": None,
"q": "IN",
"data": request.form.getlist('country')
}
name = {
"col": col2,
"type": None,
"q": "IN",
"data": request.form.getlist('name')
}
str_from_date = request.form.get('from_date')
str_to_date = request.form.get('to_date')
from_date = {
"col": col3,
"type": "date",
"q": ">=",
"data": dt.datetime.strptime(str_from_date, '%d/%m/%Y')
}
to_date = {
"col": col4,
"type": "date",
"q": "<=",
"data": dt.datetime.strptime(str_to_date, '%d/%m/%Y')
}
all_data = [country, name_col, from_date, to_date]
q = "SELECT * FROM table WHERE "
for i, d in enumerate():
_col = f"date({d['col']})" if d["type"] == "date" else d["col"]
q += f"{'AND ' if i > 0 else ''}{d['col']} {d['q']} ({['?'] * len(d['data'])}) "
data = cur.execute(q, [d["data"] for d in all_data]).fetchall()
</code></pre>
<p>我不知道这是否是理想的方法,但我想它会起作用</p>