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)