Python,SQLite:x27;%中的撇号s';
尝试执行SQLite3查询时出现语法错误。问题是因为变量inputPattern包含的 功能是:Python,SQLite:x27;%中的撇号s';,python,sqlite,apostrophe,Python,Sqlite,Apostrophe,尝试执行SQLite3查询时出现语法错误。问题是因为变量inputPattern包含的 功能是: def searchForExactEnglishToCzechTranslation(inputPattern,db): if "\'" in inputPattern: inputPattern.replace("'","''") result = db.execute("SELECT czech FROM translations WHERE english='
def searchForExactEnglishToCzechTranslation(inputPattern,db):
if "\'" in inputPattern:
inputPattern.replace("'","''")
result = db.execute("SELECT czech FROM translations WHERE english='%s'" % (inputPattern)).fetchall()
我正试着换掉那个牌子,但还是不起作用
你能给我一个建议吗?谢谢不要使用插值;使用SQL参数:
def searchForExactEnglishToCzechTranslation(inputPattern,db):
result = db.execute("SELECT czech FROM translations WHERE english=?",
(inputPattern,)).fetchall()
这负责引用(?
没有被引号包围)和转义
引述:
通常,SQL操作需要使用Python变量中的值。您不应该使用Python的字符串操作来组装查询,因为这样做是不安全的;它使您的程序容易受到SQL注入攻击(有关可能出错的幽默示例,请参阅)
相反,使用DB-API的参数替换。将?
作为占位符放置在要使用值的任何位置,然后提供一个值元组作为游标的execute()
方法的第二个参数。(其他数据库模块可能使用不同的占位符,例如%s
或:1
)
不要使用插值;使用SQL参数:
def searchForExactEnglishToCzechTranslation(inputPattern,db):
result = db.execute("SELECT czech FROM translations WHERE english=?",
(inputPattern,)).fetchall()
这负责引用(?
没有被引号包围)和转义
引述:
通常,SQL操作需要使用Python变量中的值。您不应该使用Python的字符串操作来组装查询,因为这样做是不安全的;它使您的程序容易受到SQL注入攻击(有关可能出错的幽默示例,请参阅)
相反,使用DB-API的参数替换。将?
作为占位符放置在要使用值的任何位置,然后提供一个值元组作为游标的execute()
方法的第二个参数。(其他数据库模块可能使用不同的占位符,例如%s
或:1
)
@罗皮:尊重是相互的;查看和/或打开Python并键入
import antigravity
@roippi:尊重是相互的;查看和/或打开Python并键入import antigravity
。