我認爲你展示的類型裝飾器有幾個問題。
impl
應該sqlalchemy.types.Integer
而不是DateTime
。
- 裝飾者應該允許空列。
這裏是我心目中是什麼:
import datetime, time
from sqlalchemy.types import TypeDecorator, DateTime, Integer
class IntegerDateTime(TypeDecorator):
"""a type that decorates DateTime, converts to unix time on
the way in and to datetime.datetime objects on the way out."""
impl = Integer # In schema, you want these datetimes to
# be stored as integers.
def process_bind_param(self, value, _):
"""Assumes a datetime.datetime"""
if value is None:
return None # support nullability
elif isinstance(value, datetime.datetime):
return int(time.mktime(value.timetuple()))
raise ValueError("Can operate only on datetime values. "
"Offending value type: {0}".format(type(value).__name__))
def process_result_value(self, value, _):
if value is not None: # support nullability
return datetime.datetime.fromtimestamp(float(value))
好吧,我喜歡它,可惜這並沒有使其生產進行到底。但是你爲什麼用_替換引擎? – rgz 2009-05-30 08:31:13