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

2024-10-06 08:02:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我的查询给出了奇怪的结果,所以我进行了一点调试,我将我的String,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",
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


Tags: 对象executedbdatadatestringsqlalchemy错误
1条回答
网友
1楼 · 发布于 2024-10-06 08:02:24

我想说你的问题在这里:

date=datetime.strptime(key,"%d/%m/%Y").strftime("%Y-%m-%d"),

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

相关问题 更多 >