2016-08-12 4 views
0

Je reçois l'erreur: sqlite3.OperationalError: near "%": syntax error lorsque j'essaie d'exécuter le code suivant. import sqlite3sqlite3.OperationalError: près de "%": erreur de syntaxe?

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) 

J'utilise des paramètres dans ma requête à l'aide SQL%s. Merci pour l'aide!

+2

Le [sqlite3] (https://docs.python.org/3/library/sqlite3.html) module utilise '' comme espace réservé?. –

+0

J'ai essayé cela. J'ai la même erreur sauf qu'au lieu de '%' Cela montre '?'. –

+1

Ah oui, manqué que vous essayez de passer un identifiant (nom de la table). Cela ne fonctionnera pas en utilisant des espaces réservés. Que vous devez formater dans la chaîne. Voir http://stackoverflow.com/questions/3247183/variable-table-name-in-sqlite par exemple. –

Répondre

0

Vous pouvez utiliser:

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