Vous devez transmettre l'instruction SQL et les paramètres en tant qu'arguments distincts :
cursor.execute(loggit[0], loggit[1])
ou utilisez la syntaxe d'argument variable (un splat, *
)
:
cursor.execute(*loggit)
Votre version essaie de passer un tuple contenant l'instruction SQL et les paramètres de liaison comme seul argument, où le .execute()
la fonction s'attend à trouver uniquement la chaîne de l'instruction SQL.
Il est plus courant de garder les deux séparés et peut-être de ne stocker que l'instruction SQL dans une variable :
loggit = """
INSERT INTO logger (logged_info, dummy)
VALUES
(%s, %s)
"""
cursor.execute(loggit, (bob, dummyVar))