gpt4 book ai didi

python - 为什么我无法在 Django orm 中从数据库中检索日期时间值?

转载 作者:行者123 更新时间:2023-12-01 00:27:57 25 4
gpt4 key购买 nike

我有以下情况:

在 models.py 中

def Lab(models.Model):
test_id=models.IntegerField()
test_name=models.CharField(max_length=10)
test_date=models.DateField()

我将数据库迁移到 sqlite3 并从外部 Excel 工作表填充它,现在我尝试执行以下操作:

Lab.objects.values_list('test_date',flat=True)

此调用引发以下错误

*** ValueError: invalid literal for int() with base 10: b'09 00:00:00.000000'

我可以简单地询问其他值,没有问题,但不能询问 test_date 值,这里可能有什么错误?

更新

正如所指出的,我使用以下代码片段手动填写表格:

df['test_date'] = df['test_date'].astype(str)
df['test_date'] = df['test_date'].replace('0', np.nan)
str_date = df['test_date'].str.zfill(8)
df['test_date'] = pd.to_datetime(str_date, yearfirst=True, format='%Y%m%d')`

然后我将其填充到数据库中

engine = create_engine('sqlite:///db.sqlite3', echo=False)
df.to_sql('Lab', con=engine, index=False, if_exists='append')

最佳答案

问题是 Pandas 已将您的 test_date 列作为日期时间插入,而不是普通日期 - 因此值末尾有额外的数据,Django 不知道如何处理.

我远不是 Pandas 方面的专家,但我相信如果您将 test_date 字段明确指定为日期,它会起作用:

from sqlalchemy.types import Date
df.to_sql('Lab', con=engine, dtype={"test_date": Date()}, if_exists='append')

关于python - 为什么我无法在 Django orm 中从数据库中检索日期时间值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58407541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com