我正在建立一个Flask网站,其中涉及跟踪付款,我遇到了一个问题,我似乎无法按日期过滤我的一个数据库模型.
例如,如果这是我的表的样子:
payment_to, amount, due_date (a DateTime object)
company A, 3000, 7-20-2018
comapny B, 3000, 7-21-2018
company C, 3000, 8-20-2018
Run Code Online (Sandbox Code Playgroud)
我想过滤它,以便我获得7月20日之后的所有行,或者8月份的所有行等.
我可以想到一种原始的,蛮力的方式来过滤所有付款,然后迭代遍历列表按月/年过滤,但我宁愿远离这些方法.
这是我的支付数据库模型:
class Payment(db.Model, UserMixin):
id = db.Column(db.Integer, unique = True, primary_key = True)
payment_to = db.Column(db.String, nullable = False)
amount = db.Column(db.Float, nullable = False)
due_date = db.Column(db.DateTime, nullable = False, default = datetime.strftime(datetime.today(), "%b %d %Y"))
week_of = db.Column(db.String, nullable = False)
Run Code Online (Sandbox Code Playgroud)
这是我试图Payment按日期过滤:
Payment.query.filter(Payment.due_date.month == today.month, Payment.due_date.year == today.year, Payment.due_date.day >= today.day).all()
Run Code Online (Sandbox Code Playgroud)
在哪里today简单 …
我正在研究一些LeetCode的东西,其中一个问题是反转一个整数的数字(例如123变成321).
我想到了两种方法.第一个是纯粹的"数字",使用10的幂和模运算:
def reverse_digits1(num):
reversed_num = 0
while num > 0:
reversed_num *= 10
reversed_num += num % 10
num = num // 10
return reversed_num
Run Code Online (Sandbox Code Playgroud)
第二种方法是使用内置str()和int()方法.
def reverse_digits2(num):
num = str(num)
return int(num[::-1])
Run Code Online (Sandbox Code Playgroud)
你实质上将它转换为字符串,反转它,然后将反转的字符串作为整数返回.
在这两者之间,哪种"更好"的方式呢?我猜这是第一个,它不涉及将数字变成字符串,反之亦然,并且没有潜在的信息丢失?甚至会丢失信息吗?输入都是整数,所以不用担心浮点数,对吧?
一般来说,通过str()和使用数字是一个好主意int(),或者你应该坚持使用"数值方法"?