CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [Python] Probleme ajout de données SQLITE

DébutPage précedente
1
Page suivantePage suivante
NBKL NBKL
MP
Niveau 10
21 juin 2017 à 10:22:07

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 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 :

def add_to_database(self):
		connection = sqlite3.connect("database.db")
		c = connection.cursor()
		self.now = datetime.datetime.today()
		self.text = "INSERT INTO {0}(datetime, nb_co) VALUES('{1}', '{2}')".format(self.forum, self.now, self.recup_co())
		print(self.text)
		c.execute(self.text)
		connection.commit()
		connection.close()
		sleep(5)

Voilà :hap: Un peu bête mais faut le savoir quoi :hap: Si vous avez des suggestions dites les moi :noel:

Merci de m'avoir lu :ok:

laugain laugain
MP
Niveau 11
24 juin 2017 à 00:47:26

Je t'invite à regarder la documentation officielle (ici pour Python 3.6) pour vérifier si tu réponds bien aux normes PEP en vigueur.

https://docs.python.org/3/library/sqlite3.html

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment