Mil*_*ill 0 python sqlite apostrophe
我在尝试执行SQLite3查询时遇到语法错误.问题是因为变量inputPattern包含.
功能是:
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()
这需要引用(引用?不被引号括起来)和转义.
引用sqlite3模块文档:
通常,您的SQL操作需要使用Python变量中的值.你不应该使用Python的字符串操作来组装你的查询,因为这样做是不安全的; 它使您的程序容易受到SQL注入攻击(请参阅http://xkcd.com/327/以获取可能出错的幽默示例).
而是使用DB-API的参数替换.
?在任何想要使用值的位置放置占位符,然后提供值元组作为游标execute()方法的第二个参数.(其他数据库模块可能使用不同的占位符,例如%s或:1.)