私はPythonでプログラミングしており、SQLAlchemyを使用して営業時間を保存しています。Python、SQLAlchemy:バイナリビットマスクとして営業時間を保存する
- ビットマスク
- としてバイナリでビジネスが開く時間が格納されている曜日、
- ビジネスがクローズ時間:
の営業時間は、3つの部分で構成されています。
ビットマスクは次のように動作します。 7つの数字があり、0または1のいずれかであり、平日の異なるシーケンスを表します。各位置は曜日を表します。最初の位置は月曜日を表し、最後は日曜日を表します。たとえば、1111100は月曜日 - 金曜日、0000111、金曜日 - 土曜日を表します。また、私は軍事的な時間、0600を意味する午前6時と午後6時を意味する時間を格納しています。
hours = Table('hours', Base.metadata,
Column("id", Integer, primary_key=True),
Column("businessid", Integer, ForeignKey('businesses.id')),
Column("days", Integer),
Column("open", Integer),
Column("close", Integer),
)
class Hours(object):
def __init__(self, days=None, open=None, close=None):
self.days = days
self.open = open
self.close = close
mapper(Hours, hours)
mapper(Business, businesses, properties={
'hours': relationship(Hours, backref='business'),
})
曜日を表す2つのビットマスクが重なっているときを判断するPythonicの方法は何ですか?また、Hoursオブジェクトの2つのペアが与えられたときにビジネスが現在開いているかどうかを調べる最も良い方法は何ですか?限り曜日をチェックなど
これは、設定されている日に、その日の時間が同じであることを前提としていますか? – Santa
また、重複はどういう意味ですか? – Santa
重複すると、私は紛争を意味します。私は特定のビジネスのために勤務時間を保管していますが、午前8時から午後5時までです。それから、F-Su 9AMの別のHoursオブジェクトを4PMに追加しようとしました。これらの時代は矛盾しているため、和解する必要があります。 – john