[英]sqlite3.OperationalError: near “%”: syntax error?
當我嘗試運行以下代碼時,我收到錯誤: 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)
我在使用%s
SQL
查詢中使用參數。 感謝您的幫助!
一些想法: - 使用參數不適用於表名 - 由於 sql 注入,使用字符串格式不好
所以首先,創建一個方法來使表名安全:
def escape_table_name(table):
return '"%s"'.format(table.replace('"', '')
然后使用轉義表名稱和參數完成代碼?
對於參數:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.