sqlite3.OperationalError: около "%": синтаксическая ошибка?

Я получаю сообщение об ошибке: sqlite3.OperationalError: near "%": syntax errorкогда я пытаюсь запустить следующий код. импорт sqlite3

def getFromDB(DBname,table, url):
    conn = sqlite3.connect(DBname)
    cursor = conn.cursor()
    sql = '''SELECT * FROM %s WHERE URL=%s'''
    stuff = cursor.execute(sql, (table,url))
    stuff = stuff.fetchall()
    return stuff

url = 'http://www.examplesite.com/'
getFromDB('AuthorData.sqlite','forbes',url)

Я использую параметры в моем SQL запрос с использованием %s, Спасибо за помощь!

1 ответ

Некоторая идея: - Использование параметра недоступно для имени таблицы - Использование строкового формата не очень хорошо из-за sql-инъекции

Итак, сначала создайте метод, чтобы сделать имя таблицы безопасным:

def escape_table_name(table):
    return '"%s"'.format(table.replace('"', '')

Затем завершите код, указав имя и параметр escape-таблицы, используя ? для параметра:

    sql = '''SELECT * FROM %s WHERE URL=?'''.format(escape_table_name(table))
    stuff = cursor.execute(sql, (url,))
    stuff = stuff.fetchall()

Ты можешь использовать:

sql = '''SELECT * FROM {0} WHERE URL= {1}'''.format(table, url)
Другие вопросы по тегам