Bonjour tout le monde, je suis face à un problème dans SQLite. En effet, je n'arrive pas à transmettre le nom de la table que j'essaie d'accéder.
Voici mon code :
def add_to_database(self):
connection = sqlite3.connect("database.db")
c = connection.cursor()
now = datetime.datetime.today()
c.execute("INSERT INTO ?(datetime, nb_co) VALUES(?, ?) ", (self.forum, now, self.recup_co()))
connection.commit()
connection.close()
sleep(5)
Quand je lance le code, l'erreur "sqlite3.OperationalError: near "?": syntax error" ressort. Etant donné que c'est la première fois que j'utilise SQLite je ne sais pas trop comment procéder et pourquoi j'ai cette erreur.
Ma question est donc : Comment résoudre le problème et/ou avez des suggestions concernant mon code ?
Voici le code en entier si ca peut en intéresser certains :
#!/usr/bin/python3
from bs4 import BeautifulSoup
from urllib.request import urlopen
from time import sleep
import sqlite3
import datetime
class Forum():
def __init__(self, forum, url_forum):
self.forum = forum
self.url_forum = url_forum
def add_to_database(self):
connection = sqlite3.connect("database.db")
c = connection.cursor()
now = datetime.datetime.today()
c.execute("INSERT INTO ?(datetime, nb_co) VALUES(?, ?) ", (self.forum, now, self.recup_co()))
connection.commit()
connection.close()
sleep(5)
def recup_co(self):
self.page_html = str(urlopen(self.url_forum).read()) # stockage du contenu de la page dans une variable
self.page = BeautifulSoup(self.page_html, 'html.parser')
self.resultat = self.page.select(".nb-connect-fofo")
self.nb_co = str(self.resultat) #stockage de la ligne avec le nombre de co
self.nb_co = self.nb_co[:-27] #modification de la ligne pour ne garder que le nb de co
self.nb_co = self.nb_co[31:]
return self.nb_co
dixhuit_vingtcinq = Forum("dixhuit_vingtcinq", "http://www.jeuxvideo.com/forums/0-51-0-1-0-1-0-blabla-18-25-ans.htm")
moins_quinze = Forum("moins_quinze", "http://www.jeuxvideo.com/forums/0-15-0-1-0-1-0-blabla-moins-de-15-ans.htm")
quinze_dixhuit = Forum("quinze_dixhuit", "http://www.jeuxvideo.com/forums/0-15-0-1-0-1-0-blabla-moins-de-15-ans.htm")
overwatch = Forum("overwatch", "http://www.jeuxvideo.com/forums/0-33972-0-1-0-1-0-overwatch.htm")
while(True):
dixhuit_vingtcinq.add_to_database()
moins_quinze.add_to_database()
quinze_dixhuit.add_to_database()
overwatch.add_to_database()
sleep(60)
Merci d'avoir lu jusque là et de votre potentielle aide
NBKL
MP
Niveau 10
21 juin 2017 à 10:34:02
Bon, j'aurai dû un peu mieux chercher. De ce que j'ai lu, il n'est pas possible de transmettre une table depuis une variable directement dans le c.execute. J'ai donc palier à ce problème en "construisant la commande juste avant. Ce qui donne :