2013-05-03 69 views
6

Tôi có một giá trị datetime được thực hiện bởi strptime chức năngChèn datetime vào MySql db

import MySQLdb 
a = time.strptime('my date', "%b %d %Y %H:%M") 

Có một cột trong MySql db kiểu DATETIME. Khi tôi cố gắng chèn giá trị này vào db, tôi, rõ ràng là có được lỗi của

mysql_exceptions.OperationalError: (1305, 'FUNCTION time.struct_time does not exist') 

INSERT INTO myTable(Date......) VALUES(time.struct_time(tm_year=2222, tm_mon=4, tm_mday=1, tm_hour=1, tm_min=2, tm_sec=4, tm_wday=1, tm_yday=118, tm_isdst=-1), ......) 

Làm cách nào để chèn giá trị này vào db?

+0

này sẽ giúp bạn: http://stackoverflow.com/questions/1136437/inserting-a-python-datetime-datetime-object-into -mysql – alecxe

+0

như thế nào? đó là một đối tượng datetime.datetime. –

Trả lời

9

Bạn hiện đang chuyển vào đối tượng time.struct_time, điều mà MySQL không biết gì cả. Bạn sẽ cần định dạng dấu thời gian theo định dạng mà MySQL hiểu được. Rất tiếc, thư viện MySQLdb không làm điều này cho bạn.

Nó sẽ dễ dàng nhất bằng cách sử dụng mô-đun datetime, nhưng bạn có thể làm điều này với các mô-đun time quá:

import datetime 

a = datetime.datetime.strptime('my date', "%b %d %Y %H:%M") 

cursor.execute('INSERT INTO myTable (Date) VALUES(%s)', (a.strftime('%Y-%m-%d %H:%M:%S'),)) 

Cuộc gọi .strftime() phương pháp trên đối tượng datetime.datetime định dạng thông tin theo cách như vậy mà MySQL sẽ Chấp nhận.

Làm nhiệm vụ tương tự với chỉ time mô-đun:

import time 

a = time.strptime('my date', "%b %d %Y %H:%M") 

cursor.execute('INSERT INTO myTable (Date) VALUES(%s)', (time.strftime('%Y-%m-%d %H:%M:%S', a),)) 
+0

@Antimony: Đó là ** không phải là lỗi đánh máy; có một cuộc gọi 'a.strftime()' trong mã mẫu được đăng. Tôi hơi khó chịu với tất cả những người đánh giá đã chấp nhận chỉnh sửa được đề xuất đó ngay bây giờ. –

+0

Tôi nhận ra điều đó. Lấy làm tiếc. Tôi đã đổi nó lại. – Antimony

+0

Không phải là vấn đề; Tôi đã cuộn lại bản chỉnh sửa của bạn. :-) –

Các vấn đề liên quan