flask sqlalchemy Datetime
Quickstart — Flask-SQLAlchemy Documentation (2.1)
Column and Data Types — SQLAlchemy 1.1 Documentation
“class sqlalchemy.types.Date
Bases: sqlalchemy.types._DateAffinity, sqlalchemy.types.TypeEngine
A type for datetime.date() objects.
class sqlalchemy.types.DateTime(timezone=False)
Bases: sqlalchemy.types._DateAffinity, sqlalchemy.types.TypeEngine
A type for datetime.datetime() objects.
Date and time types return objects from the Python datetime module. Most DBAPIs have built in support for the datetime module, with the noted exception of SQLite. In the case of SQLite, date and time types are stored as strings which are then converted back to datetime objects when rows are returned.
__init__(timezone=False)
Construct a new DateTime.
Parameters: timezone – boolean. If True, and supported by the backend, will produce ‘TIMESTAMP WITH TIMEZONE’. For backends that don’t support timezone aware timestamps, has no effect.
class sqlalchemy.types.Time(timezone=False)
Bases: sqlalchemy.types._DateAffinity, sqlalchemy.types.TypeEngine
A type for datetime.time() objects.”
from sipevents import app from . import db # from app import db # from datetime import datetime class Event(db.Model): __tablename__ = “events” # Columns id = db.Column(db.Integer, primary_key = True, autoincrement = True) user_openid = db.Column(db.String(64)) title = db.Column(db.String(128)) start_date = db.Column(db.DateTime) end_date = db.Column(db.DateTime) location = db.Column(db.String(256)) user_limit = db.Column(db.Integer) is_public = db.Column(db.Boolean) description = db.Column(db.Text) def __init__(self, id, user_openid, title = “”, start_date = None, end_date = None, user_limit = 0, is_public = False, description = “”): self.id = id self.user_openid = user_openid self.title = title self.start_date = start_date self.end_date = end_date self.user_limit = user_limit self.is_public = is_public self.description = description def __repr__(self): return ‘<Event id=%d user_openid=%s title=%s>’ % (self.id, self.user_openid, self.title) |
对应的初始化,就是用datetime初始化:
# test Event create/query/delete startDatetime = datetime.now() app.logger.debug(‘startDatetime=%s’, startDatetime) oneDayDelta = timedelta(days=1) app.logger.debug(‘oneDayDelta=%s’, oneDayDelta) endDatetime = startDatetime + oneDayDelta app.logger.debug(‘endDatetime=%s’, endDatetime) eventDict = { ‘id’ : 1, ‘user_openid’ : crifanUserJson[‘openid’], ‘title’ : u”讨论日历的公众号名字”, ‘start_date’ : startDatetime, ‘end_date’ : endDatetime, ‘user_limit’ : 5, ‘is_public’ : False, ‘description’ : u”头脑风暴讨论公众号的名字”, } app.logger.debug(‘eventDict=%s’, eventDict) existedEvent= Event.query.filter_by(id=eventDict[‘id’]).first() app.logger.debug(‘existedEvent=%s’, existedEvent) if existedEvent : # has exsited this event app.logger.debug(‘已存在此活动 existedEvent=%r’, existedEvent) else : eventObj = Event(id = eventDict[‘id’], user_openid = eventDict[‘user_openid’], title = eventDict[‘title’], start_date = eventDict[‘start_date’], end_date = eventDict[‘end_date’], user_limit = eventDict[‘user_limit’], is_public = eventDict[‘is_public’], description = eventDict[‘description’]) app.logger.debug(‘eventObj=%s’, eventObj) db.session.add(eventObj) db.session.commit() app.logger.debug(‘added eventObj=%s’, eventObj) currentEvents= Event.query.all() app.logger.debug(‘currentEvents=%s’, currentEvents) currentEventsCount = len(currentEvents) app.logger.debug(‘currentEventsCount=%s’, currentEventsCount) if currentEventsCount > 0 : firstEvent = currentEvents[0] app.logger.debug(‘firstEvent=%s’, firstEvent) db.session.delete(firstEvent) db.session.commit() app.logger.debug(‘deleted firstEvent=%s’, firstEvent) |
转载请注明:在路上 » [已解决]Flask的SQLAlchemy中定义和使用日期时间类型