我是python的初学者。我目前正在使用motor(asyncio pymongo)python。我尝试将数据发布到数据库中,如下所示,并为日期,股票行情,时间创建唯一索引:
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:
你能帮我错过的地方吗?
非常感谢您