Python日期不适用于MySQL Date列

时间:2014-06-09 09:50:11

标签: mysql python-2.7 flask flask-sqlalchemy python-datetime

我正在运行基于烧瓶的Web服务并使用python。

配置: Python - 2.7.3 MySQL - 5.5.31 Linux - 12.04.2

我们已经集成了仅向特定用户发送邮件2次,我们将该条目存储在特定的表格中。

CREATE TABLE user_communication_stats(   id int(11)NOT NULL AUTO_INCREMENT,   user_id bigint(20)NOT NULL,   mails_received tinyint(2)DEFAULT' 1',   current_date日期非空,   PRIMARY KEY(id),   KEY user_iduser_idcurrent_date) )ENGINE = InnoDB AUTO_INCREMENT = 19592 DEFAULT CHARSET = utf8

我们使用上表来检查有多少用户获得了多少邮件。每个用户一天最多可以获得2封邮件。

2周后,我遇到了一个问题,即“邮件已发送”'列正在变为0.我们正在使用SQL炼金术来完成所有工作。我尝试了很多调试,但一切似乎都运行良好。我在当地试过似乎工作正常。我认为这可能是一些问题所以我重新启动了这个问题。

捕捉: 当我重新启动服务器时,一切似乎在那天工作正常,我不再在该列中获得0。

为了跟踪它,我检查了2个小时以满足。我以为问题已经解决并重新入睡。再次在早上我再次检查它再次回到0.我开始担心,并再次开始调试,但事情似乎在本地。我再次重新启动服务器,然后事情开始正常。我不知道为什么重新启动服务器后它工作正常。在crontab中我推迟了重启服务器的工作。

我们正在使用python datetime

当我们去生产终端并尝试运行相同的代码而不重新启动服务器时它工作正常。我不知道网络服务有什么问题。

任何帮助或见解都有助于调试问题。

代码:

def addRecord(user_id):
try:
    if recordExists(user_id):
        logging.info(" Entry for the user %s already exists. " % (user_id))
        return True
    # otherwise create an entry
    rowObj  = UserCommunicationSettingsDTO.empty()
    rowObj.user_id = user_id
    if BaseDAO.add(rowObj):
        logging.info("Entry %s successfully created" % (user_id))
        return True
    logging.error("Entry for the user %s could not be created. " % (user_id))
    return False

except Exception as error:
    logging.error("An entry into the table could not be made." + str(error))
    return False


def updateRecord(user_id, options):
try:
    # update record with current date
    if 'updated_date' not in options:
        options['updated_date'] = datetime.today().date()
    db_session = get_session()
    db_session. \
        query(UserCommunicationSettingsDTO). \
        filter(UserCommunicationSettingsDTO.user_id == user_id).update(options)
    db_session.commit()
    return True

except Exception as error:
    logging.error(" Error updating the values for user %s with error -- %s " % (user_id, str(error)))
    db_session.rollback()
    logging.error(" Rolling back ")
    return False


def recordExists(user_id):
try:
    db_session = get_session()
    record = db_session. \
        query(UserCommunicationSettingsDTO). \
        filter(UserCommunicationSettingsDTO.user_id == user_id).first()
    db_session.close()
    if record:
        logging.info("Record already exists for user %s" % (user_id))
        return record
    else:
        logging.info("Record doesn't exist for user %s" % (user_id))
        return None
except Exception as error:
    logging.error(" Error finding record for user %s . Error -- %s" % (user_id, str(error)))
    return None

0 个答案:

没有答案