【问题标题】:search_term = voice input ,Failed executing the operation; Could not process parameterssearch_term = 语音输入,执行操作失败;无法处理参数
【发布时间】:2020-09-02 19:11:27
【问题描述】:

Hi search_term = 语音输入,显示执行操作失败;无法处理参数

 if mydb.is_connected():
            if there_exists(["what "]):
                search_term = voice_data.split("is")[-1]
                meaning = ('SELECT meaning FROM words')
                sql = f"SELECT '{meaning}' FROM words WHERE word = '{search_term}'"
                mycursor = mydb.cursor()
                mycursor.execute(sql, (meaning,))
                myresult = mycursor.fetchall()
                for meaning in myresult:
                    speak(meaning)
                else:
                    speak("i dont know")

   

【问题讨论】:

标签: python speech-recognition


【解决方案1】:

我不确定,但我没有看到 mycursor.execute(sql, (meaning,)) 在 search_term 的含义之后的第二个参数。

【讨论】:

  • 我应该给你写什么?
【解决方案2】:

因为你正在设置

search_term = voice_data.split("is")[-1]
meaning = ('SELECT meaning FROM words')

sql = f"SELECT '{meaning}' FROM words WHERE word = '{search_term}'" 

execute函数第一个参数是sql字符串,第二个参数是一个sql参数列表,在 mycursor.execute(sql, (意思)) 您正在尝试将含义 var 作为参数传递给执行,但您的 sql 字符串中没有定义任何参数。

看看https://www.psycopg.org/docs/usage.html#query-parameters

您必须像上面的文档中那样将“{meaning}”和“{search_term}”替换为 %s。

但是如果你这样做,你的查询看起来像 SELECT SELECT 意思是 FROM words FROM words WHERE ...。所以由你来用你正在寻找的内容替换含义。

如果 'meaning' 是一个单词字段,你的 slq 字符串应该是:

sql = "SELECT meaning FROM words WHERE word = '%s'"

和:

mycursor.execute(sql, (search_term))

为了安全问题,最好使用sql参数而不是连接字符串

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2018-06-19
    相关资源
    最近更新 更多