Ale*_*nev 34 python datetime boto amazon-web-services amazon-dynamodb
我有下一个代码:
users_table = Table(users_table_name, connection=Core.aws_dynamodb_connection)
users_table.put_item(data={
"login": login,
"password": hashlib.sha256(password.encode("utf-8")).hexdigest(),
"profile": profile,
"registration_date": datetime.now() # PROBLEM IS HERE
})
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,它失败并出现错误:
TypeError:不支持类型"<type'datetime.datetime'>"的值为"2015-01-12 05:02:57.053131"
我已经尝试了很多方法,但似乎无法保存datetime到DynamoDB.顺便说一句,它在MongoDB中运行良好.
有什么解决方案吗?
Ale*_*nev 31
好的,我看到DynamoDB不支持任何日期类型.所以唯一的解决方案是使用类似unix的时间作为整数,或将日期保存为字符串.

Fre*_*pos 11
根据文档:http: //docs.aws.amazon.com/amazondynamodb/latest/developerguide/JavaSDKHighLevel.html
日期S(字符串类型).Date值存储为ISO-8601格式的字符串.
小智 9
根据alejandro-franco的回应 .isoformat()做出了trick 俩。
刚刚测试过,这是一个有效的示例:
CustomerPreferenceTable.put_item(
Item={
"id": str(uuid4()),
"validAfter": datetime.utcnow().isoformat(),
"validBefore": (datetime.utcnow() + timedelta(days=365)).isoformat(),
"tags": ["potato", "eggplant"]
}
)
Run Code Online (Sandbox Code Playgroud)
小智 8
老帖子但也许仍然有趣..
您可以做什么以及它对我有何作用:
import datetime
from datetime import datetime
...
now = datetime.now()
x = now.strftime("%m/%d/%Y, %H:%M:%S")
table.put_item(
Item={
'Index': Index,
'Stamp': x,
}
)
Run Code Online (Sandbox Code Playgroud)
并适应上面的代码:
import datetime
from datetime import datetime
...
now = datetime.now()
x = now.strftime("%m/%d/%Y, %H:%M:%S")
users_table = Table(users_table_name, connection=Core.aws_dynamodb_connection)
users_table.put_item(data={
"login": login,
"password": hashlib.sha256(password.encode("utf-8")).hexdigest(),
"profile": profile,
"registration_date": x,
})
Run Code Online (Sandbox Code Playgroud)
我的输出
| 归档时间: |
|
| 查看次数: |
28647 次 |
| 最近记录: |