Wie zu verwenden Datumsbereich in python zu ziehen /Daten in mySQL-Abfrage
Wie kann ich ziehen Sie Daten in mySQL von Tag mithilfe von python-Datum?
Sagen, ich will day1
und day2
( oder einen Tag nach day1
) iterate für n
mal
So, ich brauche das Datum in "wo" SQL-Anweisung Aussehen wie unten in jeder iteration (n
mal )
day1 >= '2012-01-01' and day2 < '2012-01-02' ( n = 1 )
day1 >= '2012-01-02' and day2 < '2012-01-03' ( n = 2 )
.
.
day1 >= yesterday and day2 < today ( n times )
.
Start_date = '2012-01-01' <- How can I write this in python
End_date = Today() <- and this
So zu schreiben:
for each iteration ..
con.execute("select * from table where date >= day1 and date < day2" )
InformationsquelleAutor JPC | 2012-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
datetime
Modul:-WICHTIGER HINWEIS: ich aktualisierte die Antwort fix ein ernstes problem. Nie immer die Verwendung von string-Formatierung (ein.k.ein.
%
) für das erstellen von SQL-Abfragen, da es offen ist, zu ernsthaften Problemen, einschließlich SQL-injection. VerwendenPython-<db_driver>
api, wo fast alle RDMBes bietet die gleiche syntax1] Kein Zitat,
2] Kein string-Formatierung
Eigentlich bin ich immer die syntax-Fehler "Sie haben einen Fehler in Ihrer SQL-syntax; Lesen Sie im Handbuch, das entspricht Ihrer MySQL-server-version für den richtigen syntax zur Verwendung in der Nähe von "%s " und "Datum < %s" %(start, next)' das Datum im datetime-format .. hmmm
herausgefunden, dass ich ändern müssen "%s" zu "?" und diese Abfrage funktioniert. Basiert auf stackoverflow.com/questions/9603616/...
start = datetime.date(2012,01,01)
gibt SyntaxError: invalid token Fehler. Es solltestart = datetime.date(2012,1,1)
InformationsquelleAutor GodMan
Verwenden Sie die
datetime
Klasse mit derstrftime
Funktion.Den
datetime
Klasse wird verwendet, um zu bauen ein Objekt repräsentiert einen bestimmten Zeitpunkt. Diestrftime
Funktion wandelt es in eine bestimmte Zeichenfolge, nach der Formatierung, die Sie wählen.Laut Die MySQL-Dokumentation, das standard-datetime-Formatierung ist
YYYY-MM-DD HH:MM:SS
.Hier ist ein Beispiel, das sollte funktionieren:
Wenn Sie möchten, um zusätzliche Abfragen, erstellen Sie einfach entsprechende
datetime.datetime
Objekte auf jeder Runde Ihre Schleife. Zum Beispiel:InformationsquelleAutor Lior
Verwenden datetime.Datum Objekte. Sie sind wunderbare Dinge, denn mit Ihnen können Sie:
dt.date.today()
),start + dt.timedelta(days = 1)
,start < end
)con.execute
. Es gibt keinemuss vorher formatieren Sie Sie als Zeichenfolgen.
,
und fügen Sie ein Prozentzeichen%
imcon.execute
Linie, wie der vorhandene code nicht Rahmen der sql richtigIch bin mit dem 2-argument-form
con.execute
. Siehe PEP 249. Dies ist der richtige Weg, liefern die Argumente, um einen parametrisierten SQL-Anweisung. Es ist die bevorzugte Art, mitcon.execute
, da wird es auch schützen Sie sich from sql-injection.InformationsquelleAutor unutbu