簡體   English   中英

嘗試在 sqlachemy python 中按 date.today() 過濾時出現參數錯誤

[英]Argument Error while trying to filter by date.today() in sqlachemy python

嘗試按今天的日期過濾時出現 sqlalchemy.exc.ArgumentError

能夠打印出 date.today() 的日期,但是當我將它與 sqlalchemy 一起使用時,它的拋出屬性錯誤會告訴一個約束是預期的

我試過的代碼

def daily_Fitness() :
    result = Fitness.query.filter_by ( date.today () )

    for result in result :
        result.append ( {"Yoga" : Fitness.activity_type_1 , "Jogging" : Fitness.activity_type_2 ,
                         "Walking" : Fitness.activity_type_2 ,
                         "time" : Fitness.fitness_time ,
                         "comments" : Fitness.comments

                         } )
    return result

輸出

Traceback (most recent call last):
  File "C:\Users\siveg\anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 124, in _init_items
    spwd = item._set_parent_with_dispatch
AttributeError: 'datetime.date' object has no attribute '_set_parent_with_dispatch'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:/Users/siveg/gitProject/python-project-template/python-project-template/application/models.py", line 10, in <module>
    class Food(db.Model) :
  File "C:/Users/siveg/gitProject/python-project-template/python-project-template/application/models.py", line 16, in Food
    date=db.Column (date.today(), unique=True , nullable=False )
  File "C:\Users\siveg\anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 1636, in __init__
    self._init_items(*args)
  File "C:\Users\siveg\anaconda3\lib\site-packages\sqlalchemy\sql\schema.py", line 126, in _init_items
    util.raise_(
  File "C:\Users\siveg\anaconda3\lib\site-packages\sqlalchemy\util\compat.py", line 211, in raise_
    raise exception
sqlalchemy.exc.ArgumentError: 'SchemaItem' object, such as a 'Column' or a 'Constraint' expected, got datetime.date(2021, 7, 27)

代碼說明

假設為當前日期獲取該特定表的數據

預期產出

Able to successfully fetch the data entered from the table as specified
{"Yoga" : Fitness.activity_type_1 , "Jogging" : Fitness.activity_type_2 ,
                         "Walking" : Fitness.activity_type_2 ,
                         "time" : Fitness.fitness_time ,
                         "comments" : Fitness.comments}

filter_by需要關鍵字參數,其關鍵字是列名,並且整個值是要過濾的。

所以在這種情況下,如果你有一個像這樣的表:

from datetime import date
class FitnessRoutine(Base):
   __tablename__ = 'fitness_routines'
   id = Column(Integer, primary_key=True, index=True)
   scheduled_on = Column(Date, default=date.today)

您將通過filter_by列的名稱scheduled_on

routines_for_today = FitnessRoutine.query.filter_by(scheduled_on=date.today())

https://docs.sqlalchemy.org/en/14/orm/query.html#sqlalchemy.orm.Query.filter_by

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM