簡體   English   中英

sqlite3.OperationalError:接近“%”:語法錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM