2012-02-07 2 views
2

, 나는 다음과 같이 데이터베이스 측에서 처리 시간을 삽입 할 :보고,Python + sqlalchemy : 데이터베이스 측에서 timedelta를 처리하는 방법은 무엇입니까? 파이썬 코딩

time = func.now()-datetime.timedelta(days=100) 

또는

time = func.current_timestamp()-datetime.timedelta(days=100) 

을하지만, 어떻게 든 그것을 통해 얻을 수 없었다 경고 :

sqlalchemy\engine\default.py:330: Warning: Truncated incorrect DOUBLE value: '1970-01-04 00:00:00' 

직선으로 볼 수있는 방법은 없나요? 감사.

================================

내가 타임 스탬프 열 'date_buy'을 업데이트 할 'Purchase'테이블에서 datetime.datetime.now() 대신 python으로 업데이트 시간을 얻으려는 경우, 데이터베이스에서이 작업을 수행하려고합니다. func.now()를 선호합니다.

time = func.current_timestamp()-datetime.timedelta(days=100) 
# time = datetime.datetime.now()-datetime.timedelta(days=100) 
session.execute(update(Purchase).values(date_buy=time).where(Purchase.c.id == 11)) 

===============

해결되었습니다. 브라이언과 자신의 게시물에 감사 : http://groups.google.com/group/sqlalchemy/browse_thread/thread/a67d4f179e01b98a/ee688a0b8a999f52?hl=en&lnk=gst&q=date_add#ee688a0b8a999f52

+0

솔루션을 찾았 으면 대답을 수락하여 질문을 닫습니다. 시스템의 워크 플로를 완료하려면이 작업을 수행하십시오. – Nilesh

답변

1

경고는

Warning: Truncated incorrect DOUBLE value: '1970-01-04 00:00:00'

는이 데이터를 잘라내는 방법이다. 시간 객체를 저장할 필드 유형을 확인하십시오. 그것은 당신이 datetime 값으로 DOUBLE 값을 저장하려고 시도하고 있다고 말한다.

문제가 해결되지 않으면 몇 가지 코드 예를 들어서 어떻게 할 것인지 아이디어를 얻으십시오.

+1

pls는 편집 된 게시물을 봅니다. 이 필드에 작업을 Python이 아닌 MySQL로 두는 것이 올바른지 확실하지 않습니다. 감사! – avemax

+0

date_buy의 유형은 무엇입니까? 구매 클래스를 제공해주십시오. – Nilesh

+0

CURRENTTIMESTAMP가 double 값이고 CURRENTTIMESTAMP에서 datetime을 빼내려고합니다. 동일한 유형의 피연산자를 사용하여 작업을 수행하면됩니다. 당신은'converttimestamp (func.now() - datetime.timedelta (days = 100))'을 사용할 수 있습니다. – Nilesh

관련 문제