Hallo __blackjack__
vielen Dank für das Beispiel! Tatsächlich hatte ich es mittlerweile selbst lösen können. Ich hatte das falsch verstanden, nämlich, dass ich
func.dateselbst definieren muss. Lag daran, dass ich
func nicht aus dem sqlalchemy Namensraum importiert hatte (ich importiere immer nur das, was ich brauche, nicht den ganzen Namensraum). Dennoch verstehe ich folgendes noch nicht.
Folgendes funktioniert nicht:
Code: Alles auswählen
from datetime import datetime
class Base(DeclarativeBase):
type_annotation_map = {
datetime.date: TIMESTAMP(timezone=True),
class Part(Base):
testing_date: Mapped[datetime.date]
....
example = Part(testing_date = datetime.now().date(),
....
stmt = select(func.date(Part.testing_date))
.....
und führt am Ende zu:
Code: Alles auswählen
.../.venv/lib/python3.11/site-packages/sqlalchemy/orm/decl_api.py", line 1259, in _resolve_type
search = ((pt, pt) for pt in python_type_type.__mro__)
^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'method_descriptor' object has no attribute '__mro__'
Folgendes aber schon:
Code: Alles auswählen
from datetime import datetime, date
class Base(DeclarativeBase):
type_annotation_map = {
date: TIMESTAMP(timezone=True),
class Part(Base):
testing_date: Mapped[date]
....
example = Part(testing_date = datetime.now().date(),
....
stmt = select(func.date(Part.testing_date))
.....
Einziger Unterschied ist, dass ich sowohl in der
type_annotation, als auch in der Klassendefinition den
datetime Namensraum mit angegeben hatte, was offenbar nicht geht. Warum, ist mir nicht klar.
Und warum gibt es nur
und nicht