Код: Выделить всё
class User(Model):
id = tortoise.fields.IntField(primary_key=True)
age = tortoise.fields.IntField()
datetime = tortoise.fields.DatetimeField(auto_now_add=True)
Код: Выделить всё
import asyncio
import time
import tortoise.connection
import tortoise.timezone
from tortoise import Tortoise
from database import User
from datetime import timedelta
async def test():
for _ in range(5):
user = await User.create(age=18)
print(f"Created user with datetime: {user.datetime}")
time.sleep(5)
end_time = tortoise.timezone.now()
start_time = end_time - timedelta(hours=2)
print(f"Start time is {start_time}")
print(f"End time is {end_time}")
users = await User.filter(datetime__range=(start_time, end_time)).all()
print(users)
async def main():
await Tortoise.init(
db_url="sqlite://:memory:",
# timezone="Europe/Moscow",
# use_tz=True,
modules={"discord": ["database"]}
)
await Tortoise.generate_schemas()
await test()
if __name__ == "__main__":
try:
asyncio.run(main())
finally:
asyncio.run(tortoise.connection.connections.close_all())
Код: Выделить всё
Created user with datetime: 2024-09-21 16:57:31.550512+00:00
Created user with datetime: 2024-09-21 16:57:31.550512+00:00
Created user with datetime: 2024-09-21 16:57:31.550512+00:00
Created user with datetime: 2024-09-21 16:57:31.551512+00:00
Created user with datetime: 2024-09-21 16:57:31.551512+00:00
Start time is 2024-09-21 14:57:36.552198+00:00
End time is 2024-09-21 16:57:36.552198+00:00
[]
Может кто-нибудь объяснить, что я такое? делаешь неправильно? Я попытался установить параметры часового пояса и use_tz в Tortoise.init(). Никаких результатов. Вот SQL-запрос, который генерирует ORM:
Код: Выделить всё
SELECT "datetime","age","id"
FROM "user"
WHERE "datetime" BETWEEN '2024-09-21T14:57:36.552198+00:00' AND '2024-09-21T16:57:36.552198+00:00'
Судя по ответу @winner_joiner, этот запрос не вернул ни одного пользователя из-за ошибки sqlite. Я попробовал использовать тот же запрос к базе данных PosgreSQL, и он сработал безупречно. Скриншот прилагается:

Подробнее здесь: https://stackoverflow.com/questions/790 ... time-fails