我试图搜索我的数据库并显示结果,但我的代码什么也没有返回,我无法找出错误在哪里。
这就是我如何抓取数据并将其插入数据库:
def getJobsData(url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0'}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, 'html.parser')
data = []
for e in soup.select('.card'):
data.append({
'title': e.h2.text,
'desc': e.ul.get_text('\n', strip=True)
})
try:
for item in data:
c.execute('''INSERT INTO job VALUES(?,?)''',
(item['title'], item['desc']))
return
except:
return
字符串
这是搜索代码:
@app.route("/search", methods=['GET', 'POST'])
def search():
error = ""
user_input = None
data = None
try:
if request.method == "POST":
conn = sqlite3.connect('jobs.db')
c = conn.cursor()
c.execute('''SELECT * FROM job WHERE title = (?,)''', (request.form["search"],))
data = c.fetchall()
user_input = (request.form["search"],)
return render_template("search.html", data=data, user_input=user_input)
except Exception as e:
error = (str(e))
return render_template("search.html", error=error, user_input=user_input)
型
超文本标记语言:
<form class="navbar-form navbar-left" action="{{ url_for('search') }}" method="POST" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search" name="search" value="{{ request.form.search }}">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
型
我正在使用Python,Flask和SQLite3。我做错了什么,我如何修复这个?谢谢!
**编辑:**我意识到代码确实从数据库返回数据,但搜索查询必须与标题完全匹配。试图找出如何解决这个问题。这是我更新的内容,打印语句只是为了测试:
if request.method == "POST":
conn = sqlite3.connect('jobs.db')
c = conn.cursor()
user_input = request.form["search"]
data = c.execute('''SELECT * FROM job WHERE title LIKE ?''', (user_input,)).fetchall()
print("USER INPUT:" + user_input)
print(data)
for d in data:
print(d)
return render_template("search.html", data=data, user_input=user_input)
型
1条答案
按热度按时间bxfogqkk1#
SQL中的
=
运算符应该取一个值:字符串