0

Google カレンダー API で Flask/SqlAlchemy アプリを使用しています。基本的に、私はイベントのデータベースを作成しています。以下は、簡略化されたクラスのスニペットです。

# Flask. We just need the basic stuff in this common moduel
from flask import Flask

# flask SQLAlchemy
from flask.ext.sqlalchemy import SQLAlchemy

# Sort
from sqlalchemy import desc,asc,and_

# Datetime
from datetime import datetime, date



class FlyingEvent(db.Model):
    # Event Data
    event_id = db.Column(db.Text, primary_key=True)
    updated_datetime = db.Column(db.DateTime)
    start_date = db.Column(db.DateTime)
    end_date = db.Column(db.DateTime)
    status = db.Column(db.Text)
    creator_email = db.Column(db.Text)
    summary = db.Column(db.Text)
    description = db.Column(db.Text)

    # Flying-specific entries
    flying = db.Column(db.Boolean)
    tach_start = db.Column(db.Float)
    tach_end = db.Column(db.Float)


def extract_hours():
        def get_digits(line):
          if re.compare('[\d\.]+', line):
            return line
          else:
            return None
        try: 
          right_now=date.today()
          if self.flying and self.end_date.date() < right_now:
            lines = self.description.split('\n')
            self.tach_start = get_digits(lines[0])
            self.tach_end = get_digits(lines[1])
        except Exception as e:
            raise Exception('%r, Could not parse tach %r %r' % (e, self, 
                right_now))

これにより例外が発生します (オブジェクトの repr で再発生させます):

Exception: AttributeError("'module' object has no attribute 'compare'",), Could not parse tach { "event_id": u'go8bl9i615f7e7qljuoun9bqgk', "update_datetime": datetime.datetime(2013, 4, 12, 23, 58, 54, 371000), "start_date": datetime.datetime(2013, 4, 4, 0, 0), "end_date": datetime.datetime(2013, 4, 5, 0, 0), "status": u'confirmed',        "creator_email": u'jordanzaretsky@gmail.com', "summary": u'jordan 10.6 to 10.9', "description": u'1010.7\n1010.9', "flying": True, "tach_start": 1010.7, "tach_end": 1010.9} datetime.date(2013, 4, 14)

self.end_date は datetime オブジェクト (.date() を取得しています) であり、right_now は datetime.date() であるように思えます。

私は何が欠けていますか?

4

2 に答える 2

2

reモジュールには機能がないため、このエラーが発生しましcompareた。私は、あなたが意味したと思いますre.match

if re.match('[\d\.]+', line):
于 2013-04-14T12:39:22.497 に答える
2

re.compareモジュールが提供する機能ではないを使用していreます。

re.search()おそらく、またはre.match()代わりに使用したかったのですか?または、列と列float()の実際の浮動小数点値を使用して取得することもできます。tach_starttach_end

def get_digits(line):
    try:
        return float(line)
    except ValueError:
        return None
于 2013-04-14T12:39:32.617 に答える