Saya memiliki kolom tanggal di tabel MySQL. Saya ingin memasukkan datetime.datetime()
objek ke dalam kolom ini. Apa yang harus saya gunakan dalam pernyataan eksekusi?
Saya telah mencoba:
now = datetime.datetime(2009,5,5)
cursor.execute("INSERT INTO table
(name, id, datecolumn) VALUES (%s, %s
, %s)",("name", 4,now))
Saya mendapatkan pesan kesalahan sebagai: "TypeError: not all arguments converted during string formatting"
Apa yang harus saya gunakan %s
?
%s
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s , '%s')",("name", 4,now))
Jawaban:
Untuk bidang waktu, gunakan:
Saya pikir strftime juga berlaku untuk datetime.
sumber
time
dalam contoh ini?Anda kemungkinan besar mendapatkan TypeError karena Anda membutuhkan tanda kutip di sekitar nilai kolom data.
Mencoba:
Sehubungan dengan formatnya, saya berhasil dengan perintah di atas (yang mencakup milidetik) dan dengan:
Semoga ini membantu.
sumber
%s
di sekitarpymsql
.Coba gunakan
now.date()
untuk mendapatkanDate
objek daripada aDateTime
.Jika itu tidak berhasil, maka mengubahnya menjadi string seharusnya berhasil:
sumber
Gunakan metode Python
datetime.strftime(format)
, di mana format ='%Y-%m-%d %H:%M:%S'
.Zona waktu
Jika zona waktu menjadi perhatian, zona waktu MySQL dapat diatur untuk UTC sebagai berikut:
Dan zona waktu dapat diatur dengan Python:
Dokumentasi MySQL
sumber
Database apa yang Anda sambungkan? Saya tahu Oracle bisa pilih-pilih tentang format tanggal dan menyukai format ISO 8601 .
** Catatan: Ups, saya baru saja membaca Anda berada di MySQL. Cukup format tanggal dan coba sebagai panggilan SQL langsung terpisah untuk diuji.
Dengan Python, Anda bisa mendapatkan tanggal ISO seperti
Misalnya, Oracle menyukai tanggal seperti
Bergantung pada database Anda, jika itu adalah Oracle, Anda mungkin perlu TO_DATE:
Penggunaan umum TO_DATE adalah:
Jika menggunakan database lain (saya melihat kursor dan berpikir Oracle; saya bisa saja salah) kemudian periksa alat format tanggal mereka. Untuk MySQL adalah DATE_FORMAT () dan SQL Server adalah CONVERT.
Juga menggunakan alat seperti SQLAlchemy akan menghilangkan perbedaan seperti ini dan membuat hidup Anda mudah.
sumber
Jika Anda hanya menggunakan python datetime.date (bukan datetime.datetime penuh), cukup gunakan tanggal sebagai string. Ini sangat sederhana dan berfungsi untuk saya (mysql, python 2.7, Ubuntu). Kolom
published_date
adalah bidang tanggal MySQL, variabel pythonpublish_date
adalahdatetime.date
.sumber
saat memasukkan ke t-sql
ini gagal:
ini bekerja:
jalan mudah:
sumber