Ich habe eine Datumsspalte in einer MySQL-Tabelle. Ich möchte ein datetime.datetime()
Objekt in diese Spalte einfügen . Was soll ich in der execute-Anweisung verwenden?
Ich habe versucht:
now = datetime.datetime(2009,5,5)
cursor.execute("INSERT INTO table
(name, id, datecolumn) VALUES (%s, %s
, %s)",("name", 4,now))
Ich erhalte die Fehlermeldung: "TypeError: not all arguments converted during string formatting"
Was soll ich anstelle von verwenden %s
?
%s
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s , '%s')",("name", 4,now))
Antworten:
Verwenden Sie für ein Zeitfeld:
Ich denke, strftime gilt auch für datetime.
quelle
time
in diesem Beispiel?Sie erhalten höchstwahrscheinlich den TypeError, da Sie Anführungszeichen um den Wert der Datumsspalte benötigen.
Versuchen:
In Bezug auf das Format hatte ich Erfolg mit dem obigen Befehl (der die Millisekunden enthält) und mit:
Hoffe das hilft.
quelle
%s
inpymsql
.Versuchen Sie
now.date()
, einDate
Objekt anstelle eines zu erhaltenDateTime
.Wenn das nicht funktioniert, sollte das Konvertieren in einen String funktionieren:
quelle
Verwenden Sie die Python-Methode
datetime.strftime(format)
, wobei format ='%Y-%m-%d %H:%M:%S'
.Zeitzonen
Wenn Zeitzonen ein Problem darstellen, kann die MySQL-Zeitzone für UTC wie folgt eingestellt werden:
Und die Zeitzone kann in Python eingestellt werden:
MySQL-Dokumentation
quelle
Mit welcher Datenbank verbinden Sie sich? Ich weiß, dass Oracle bei Datumsformaten wählerisch sein kann und das ISO 8601- Format mag .
** Hinweis: Ups, ich habe gerade gelesen, dass Sie auf MySQL sind. Formatieren Sie einfach das Datum und versuchen Sie es als separaten direkten SQL-Aufruf zum Testen.
In Python können Sie ein ISO-Datum wie erhalten
Zum Beispiel mag Oracle Daten wie
Abhängig von Ihrer Datenbank müssen Sie Oracle möglicherweise TO_DATE:
Die allgemeine Verwendung von TO_DATE ist:
Wenn Sie eine andere Datenbank verwenden (ich habe den Cursor gesehen und dachte, Oracle; ich könnte mich irren), überprüfen Sie deren Datumsformat-Tools. Für MySQL ist es DATE_FORMAT () und für SQL Server ist es CONVERT.
Auch die Verwendung eines Tools wie SQLAlchemy beseitigt solche Unterschiede und erleichtert Ihnen das Leben.
quelle
Wenn Sie nur eine Python-Datei datetime.date verwenden (keine vollständige datetime.datetime), setzen Sie das Datum einfach als Zeichenfolge um. Dies ist sehr einfach und funktioniert für mich (MySQL, Python 2.7, Ubuntu). Die Spalte
published_date
ist ein MySQL-Datumsfeld, die Python-Variablepublish_date
istdatetime.date
.quelle
beim iserting in t-sql
das schlägt fehl:
das funktioniert:
einfacher Weg:
quelle