Python 错误';str';对象没有属性';toordinal';在asyncpg中

Python 错误';str';对象没有属性';toordinal';在asyncpg中,python,postgresql,sqlalchemy,asyncpg,Python,Postgresql,Sqlalchemy,Asyncpg,我的查询给出了奇怪的结果,所以我进行了一点调试,将我的字符串,date对象更改为sqlalchemydate,因此引发了此错误 asyncpg.exceptions.DataError: invalid input for query argument $2: '2020-03-11' ('str' object has no attribute 'toordinal') 这是我的sqlalchemyTable db = sqlalchemy.Table( "db", me

我的查询给出了奇怪的结果,所以我进行了一点调试,将我的
字符串
,date对象更改为sqlalchemy
date
,因此引发了此错误

asyncpg.exceptions.DataError: invalid input for query argument $2: '2020-03-11'
('str' object has no attribute 'toordinal')
这是我的sqlalchemyTable

db = sqlalchemy.Table(
"db",
metadata,
sqlalchemy.Column("date", Date),
sqlalchemy.Column("data", JSONB),
)
如何插入值:

query = db.insert().values(
    date=datetime.strptime(key,"%d/%m/%Y").strftime("%Y-%m-%d"),
    data=value,
)
try:
    await database.execute(query)
except UniqueViolationError:
    pass
为什么我要将类型字符串更改为Date,因为当我运行类似

query = f"""SELECT * FROM db WHERE date BETWEEN SYMMETRIC '{start_at}' AND '{end_at}'"""
return await database.execute(query)

它只返回了一行和一列,如
2020-03-11

我想说您的问题在这里:

date=datetime.strtime(键,“%d/%m/%Y”).strftime(“%Y-%m-%d”),


您正在向日期字段传递字符串。SQLAlchmey正在查找要传入的日期对象,因此出现“('str'对象没有属性'toordinal')”错误。toordinal是日期对象的属性。删除
.strftime(“%Y-%m-%d”)
它应该可以工作。

你好@Adrian yup我知道,但我需要以yyyy-mm-dd格式存储,我如何实现这一点?如果在数据库的日期字段中存储,它将不会以其他格式存储。它存储为相对于历元的数值。格式化是您在检索时执行的操作。如果未在数据库中的日期字段中存储数据,则不应在模型中使用日期。