我在一个Python应用程序中使用SQLModel ORM框架,在try 将新记录插入到PostgreSQL数据库时,遇到了与DateTime对象相关的TypeError.
from datetime import datetime, timezone
import uuid
from sqlmodel import Field, SQLModel, Relationship, UniqueConstraint
from typing import List
class UserBase(SQLModel):
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
phone_number: str = Field(max_length=255)
phone_prefix: str = Field(max_length=10)
class User(UserBase, table=True):
__table_args__ = (
UniqueConstraint("phone_number", "phone_prefix", name="phone_numbe_phone_prefix_constraint"),
)
registered_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
interests: List["Interest"] = Relationship(back_populates="user")
try 插入新的User
记录时,遇到以下错误:
E TypeError: can't subtract offset-naive and offset-aware datetimes
asyncpg/pgproto/./codecs/datetime.pyx:152: TypeError
上述异常是以下异常的直接原因:
self = <sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_cursor object at 0x108b78ee0>
operation = 'INSERT INTO "user" (id, phone_number, phone_prefix, registered_at) VALUES ($1::UUID, $2::VARCHAR, $3::VARCHAR, $4::TIMESTAMP WITHOUT TIME ZONE)'
parameters = ('d9999373-a43d-4154-935c-f28f13f17d3e', '8545227945', '+342', datetime.datetime(2024, 2, 29, 18, 25, 54, 21935, tzinfo=datetime.timezone.utc))
如何解决此TypeError以确保SQLModel中的时区感知日期时间对象之间的兼容性?