Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork782
Open
Description
First Check
- I added a very descriptive title to this issue.
- I used the GitHub search to find a similar issue and didn't find it.
- I searched the SQLModel documentation, with the integrated search.
- I already searched in Google "How to X in SQLModel" and didn't find any information.
- I already read and followed all the tutorial in the docs and didn't find an answer.
- I already checked if it is not related to SQLModel but toPydantic.
- I already checked if it is not related to SQLModel but toSQLAlchemy.
Commit to Help
- I commit to help with one of those options 👆
Example Code
classUserBase(SQLModel):username:str=Field(index=True,unique=True)email:EmailStr=Field(unique=True,index=True)# this field should be unique for table and this field is requiredfullname:str|None=Nonecreated_at:datetime=Field(default_factory=datetime.utcnow)updated_at:datetime=Field(default_factory=datetime.utcnow)
Description
I write mycreated_at andupdated_at fields like this, however, this did not work, because of the time awareness,
SQLModel user: fullname='string' created_at=datetime.datetime(2023, 1, 26, 18, 19, 32, 961000, tzinfo=datetime.timezone.utc) updated_at=datetime.datetime(2023, 1, 26, 18, 19, 32, 961000, tzinfo=datetime.timezone.utc) id=None is_staff=False is_admin=False username='string' email='user@example.com' password='string'(sqlalchemy.dialects.postgresql.asyncpg.Error) <class 'asyncpg.exceptions.DataError'>: invalid input for query argument $4: datetime.datetime(2023, 1, 26, 18, 19, 3... (can't subtract offset-naive and offset-aware datetimes)After checking Github, i found this solution:
classAuthUser(sqlmodel.SQLModel,table=True):__tablename__='auth_user'id:Optional[int]=sqlmodel.Field(default=None,primary_key=True)password:str=sqlmodel.Field(max_length=128)last_login:datetime.datetime=Field(sa_column=sa.Column(sa.DateTime(timezone=True),nullable=False))
It is written with mixing SQLModel stuff and the SALAlchemy, I know SQLModel is SQLAlchemy under the hood but this feels strange, cause i want to face SQLModel ONLY.
Is there any better way of handling this?
Let's say when SQLModel create tables, it will check the payding fieldcreated_at, if it is timezone aware datetime then it will set it assa_column=sa.Column(sa.DateTime(timezone=True) so that we do not need to mix them both,
Operating System
macOS
Operating System Details
No response
SQLModel Version
0.0.8
Python Version
3.10.2
Additional Context
No response