2017-06-19 2 views
1

Meine Frage, wie unten in Python Kolben istAusgabe mit DATE_FORMAT in Inline-SQL-Abfrage Python Flask

result = app._engine.execute ("select bookingid, DATE_FORMAT(bookingdate, '%Y-%m-%d'), DATE_FORMAT(pickupdate, '%Y-%m-%d'), consigneeid, fromcity from booking where consignerid = '{0}'".format(loginid)) 

Diese Abfrage funktioniert, wenn ich in MySQL Workbench ausgeführt, und Datum im Format yyyy-mm-dd aber wenn ich laufe dass in python Kolben erhalten die folgenden Fehler

File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQLdb/cursors.py", line 187, in execute 
query = query % tuple([db.literal(item) for item in args])TypeError: not enough arguments for format string 

Es ist für mehr Argumente suchen, obwohl das% in der Abfrage für die Formatierung und nicht für Argumente. Ich habe versucht, nach dem Grund zu suchen, konnte aber keinen guten finden, was mache ich hier falsch?

Antwort

1

Bei der Verwendung von MySQL Connector für Python sollten Sie wörtliches% entkommen, ist dies, weil Python das Prozentzeichen (%) für String-Formatierung verwendet.

try this:

result = app._engine.execute ("select bookingid, DATE_FORMAT(bookingdate, '%%Y-%%m-%%d'), DATE_FORMAT(pickupdate, '%%Y-%%m-%%d'), consigneeid, fromcity from booking where consignerid = '{0}'".format(loginid)) 
+0

Dank Occasus für das Escape-Zeichen% unter Hinweis darauf, wurde mit Backslash versuchen, die Abfrage Sie funktioniert perfekt zur Verfügung gestellt, um es in Bootstrap-Tabelle machen zu machen, habe ich ‚als bookingdate‘, dh DATE_FORMAT (Buchungsdatum, '%% Y - %% m - %% d') als Buchungsdatum, alles gut. – deepesh