为了账号安全,请及时绑定邮箱和手机立即绑定

mysql.connector.errors.ProgrammingError:光标未连接

mysql.connector.errors.ProgrammingError:光标未连接

慕尼黑的夜晚无繁华 2023-08-22 16:13:03
在输入页面上写下我想要搜索的单词和单词内的字母后,它会转到/search4,并且我在页面上收到错误mysql.connector.errors.ProgrammingError: 检查这里的代码后,光标未连接。from flask import Flask, render_template, request, escapefrom vsearch import search4lettersfrom DBcm import UseDatabaseapp = Flask(__name__)app.config['dbconfig'] = {'host': '127.0.0.1',                            'user': 'vsearch',                            'password': 'vsearchpasswd',                            'database': 'vsearchlogDB', }def log_request(req: 'flask_request', res: str) -> None:    with UseDatabase(app.config['dbconfig']) as cursor:        _SQL = """insert into log                (phrase, letters, ip, browser_string, results)                values                (%s, %s, %s, %s, %s)"""    cursor.execute(_SQL, (req.form['phrase'],                            req.form['letters'],                            req.remote_addr,                            req.user_agent.browser,                            res, ))@app.route('/search4', methods=['POST'])def do_search() -> 'html':    phrase = request.form['phrase']    letters = request.form['letters']    title = 'Here are your results:'    results = str(search4letters(phrase, letters))    log_request(request, results)    return render_template('results.html',                            the_title=title,                            the_phrase=phrase,                            the_letters=letters,                            the_results=results,)@app.route('/')@app.route('/entry')def entry_page() -> 'html':    return render_template('entry.html',                            the_title='Welcome to search4letters on the web!')
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

调用cursor.execute应该在with块内,因为cursor仅存在于该块内。


这实际上是一个缺失的缩进:


def log_request(req: 'flask_request', res: str) -> None:

    with UseDatabase(app.config['dbconfig']) as cursor:

        _SQL = """insert into log

                (phrase, letters, ip, browser_string, results)

                values

                (%s, %s, %s, %s, %s)"""

        cursor.execute(_SQL, (req.form['phrase'],

                            req.form['letters'],

                            req.remote_addr,

                            req.user_agent.browser,

                            res, ))


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1702 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信