Я начинающий с питона.В настоящее время я работаю с моторным (asyncio pymongo) питоном.Я пытаюсь разместить данные в своей базе данных, как показано ниже, и создаю уникальный индекс для даты, тикера и времени:
import asyncio
import motor.motor_asyncio
import time
import datetime
import pymongo
client = motor.motor_asyncio.AsyncIOMotorClient("host","port")
dbPrice = client["CheckPost"]
Time = datetime.datetime.now()
Time.date()
async def Check():
dataCheck = [{"Ticker": "ACB",
"ForeignBuyQ": 1200,
"ForeignSellQ": 1700,
"TotalMatchQ": 321311,
"Time":151543431},
{"Ticker": "BMP",
"ForeignBuyQ": 1400,
"ForeignSellQ": 1800,
"TotalMatchQ": 424311,
"Time": 151543531},
{"Ticker": "ROS",
"ForeignBuyQ":140420,
"ForeignSellQ":11800,
"TotalMatchQ":652424311,
"Time":151543731},
{"Ticker":"FLC",
"ForeignBuyQ":180210,
"ForeignSellQ":179200,
"TotalMatchQ":975424311,
"Time":151543931},
{"Ticker":"ART",
"ForeignBuyQ":18220210,
"ForeignSellQ":17921200,
"TotalMatchQ":97542124311,
"Time":151543931}]
for data in dataCheck:
data.setdefault("Time",int(time.mktime(Time.timetuple())))
if not await dbPrice["StockVCSC"].find_one({"Date":int(time.mktime(Time.date().timetuple()))}):
await dbPrice["StockVCSC"].insert_one({"Date":int(time.mktime(Time.date().timetuple())),
"Data":[data]})
else:
await dbPrice["StockVCSC"].update_one({"Date":int(time.mktime(Time.date().timetuple()))},
{"$push":{"Data":data}})
await dbPrice["StockVCSC"].create_index([("Date", pymongo.ASCENDING),(
"Data.Ticker", pymongo.ASCENDING),(
"Data.Time", pymongo.ASCENDING)], unique = True)
loop = asyncio.get_event_loop()
loop.run_until_complete(Check())
Но когда я проверяю, чтобы вставить эти документы выше, они все равно вставляются в мои базы данных без предупреждения
Traceback (most recent call last): DuplicateKeyError: E11000 duplicate
key error index:
Можете ли вы помочь мне, где я пропустил.
Большое спасибо