I have a database of people names and their birthdays. The format of birthday is mm/dd/yyyy
, like "3/13/1960".
I want to extract a list of people who are born after a specific date. I called this date "base".
The program that you see below, firstly creates a DB of people (to simulate the real DB that I want to work with), and then extracts the required list. The problem is that the result is not as I expect:
import datetime as dt
import peewee as pw
db = pw.SqliteDatabase('people1.db')
class Person(pw.Model):
name = pw.CharField()
birthday = pw.DateField(formats=['%m/%d/%Y'])
class Meta:
database = db # This model uses the "people.db" database.
db.create_tables([Person])
bob0 = Person(name='Bob0', birthday='4/13/1940')
bob1 = Person(name='Bob1', birthday='5/13/1950')
bob2 = Person(name='Bob2', birthday='3/13/1960')
bob3 = Person(name='Bob3', birthday='3/13/1970')
bob4 = Person(name='Bob4', birthday='3/13/1980')
bob5 = Person(name='Bob5', birthday='3/13/1990')
base = Person(name="base", birthday='3/13/1960')
bob0.save()
bob1.save()
bob2.save()
bob3.save()
bob4.save()
bob5.save()
base.save()
for item in Person.select().where(Person.birthday > base.birthday):
print item.name , item.birthday
Output:
>>> ================================ RESTART ================================
>>>
Bob0 1940-04-13
Bob1 1950-05-13
Bob3 1970-03-13
Bob4 1980-03-13
Bob5 1990-03-13
>>>
As you see above, base = 3/13/1960
. So I shouldn't have Bob0 and Bob1 in output! How can I handle it?
Note that, I don't want to change the format of birthdays in the database. I also don't want to fetch all the rows and check them later! I want to fetch the required rows only.