Ich benutze Python 2, wenn das für dieses Problem von Bedeutung ist. Ich spiele mit mysql.connector als eine Lernübung, und hatte einige Arbeitseinsätze gebaut, dann stieß ich auf ein seltsames (für mich) Problem - ich bin sicher, dass ich etwas falsch mache, das ist einfach. Ich habe in zwei Spalten für ein paar Tabellen eingefügt, etwas wie das erste Beispiel unten; Als ich einen Fall hatte, in den ich nur eine Spalte einfügte, bekam ich einen Syntaxfehler.Python Mysql einfügen Syntaxfehler wenn nur eine Variable
Irgendwelche Ideen, warum Syntax wie folgt funktioniert gut:
query_publisher = "INSERT INTO publisher (name, name2) "\
"VALUES (%s, %s) " \
"ON DUPLICATE KEY UPDATE PUBLISHER_ID=LAST_INSERT_ID(PUBLISHER_ID)"
args_publisher = (publisher_name, publisher_name2)
Doch diese Syntax, das ist, was wirklich tun möchte, ich, wirft einen Syntaxfehler:
query_publisher = "INSERT INTO publisher (name) "\
"VALUES (%s) " \
"ON DUPLICATE KEY UPDATE PUBLISHER_ID=LAST_INSERT_ID(PUBLISHER_ID)"
args_publisher = (publisher_name)
[EDIT]: in beiden Fällen Ausführung ich dies mit:
cursor.execute(query_publisher, args_publisher)
den Fehler:
1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%s ON DUPLICATE KEY UPDATE PUBLISHER_ID=LAST_INSERT_ID(PUBLISHER_ID)' at line 1
Wie ausführen Sie diese Abfrage? – tadman
cursor.execute (query_publisher, args_publisher) - Ich benutze dies in beiden Fällen. –
Ich bin nicht so vertraut mit Python, aber wenn es wie Perl ist, dann kann es sein, dass 'args_publisher' ein Skalar ist anstatt eines Listentyps. Gibt es irgendeinen Grund, warum du das mit Zwischenvariablen machst anstatt direkt? Würde '(publisher_name,)', um es als Liste zu erzwingen, das Problem beheben? – tadman