sqlite3.OperationalError:靠近“%”:语法错误?

2024-09-24 06:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到错误: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查询中的参数。谢谢你的帮助!在


Tags: 代码urlsql错误tableerrorconnsqlite3
2条回答

您可以使用:

sql = '''SELECT * FROM {0} WHERE URL= {1}'''.format(table, url)

一些想法: -Using参数不可用于表名 -由于sql注入,使用字符串格式并不好

因此,首先,创建一个使表名安全的方法:

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

然后使用?作为参数,用转义表名和参数完成代码:

^{pr2}$

相关问题 更多 >