通过 python 生成随机数据,并批量插入到 Amazon DocumentDB (或mongodb) 中
创始人
2024-03-15 20:09:40

通过 python 生成随机数据,并批量插入到 Amazon DocumentDB (或mongodb) 中。

Python 生成随机数据。 使用 random。 例如:
随机整数 (0 - 999999)

id = random.randint(0,999999)

随机选择一个 item

enum_city = ['Beijing','Shanghai','Guangzhou','Shenzhen','Hangzhou','Wuhan']
city = random.choice(enum_city)

随机字符串

import random
import string
str = random.sample(string.ascii_letters + string.digits, 16)
print(''.join(str))

生成想要的数据格式(json)

    enum_bool = ['true', 'false']enum_sexy = ['male', 'female']enum_city = ['Beijing','Shanghai','Guangzhou','Shenzhen','Hangzhou','Wuhan']enum_device = ['IOS','Android']random_id = random.randint(0,99999999)mobile = '138%s' % random_idsmsConsent = random.choice(enum_bool)emailConsent = random.choice(enum_bool)sexual = random.choice(enum_sexy)city = random.choice(enum_city)device = random.choice(enum_device)insertdata = '''
{"journeyId" : 1,"mobile": "%s","email": "%s","smsConsent": "%s","emailConsent": "%s","nextStepId": 1,"traits": [{"tag": "sexual", "value": "%s"},{"tag": "city", "value": "%s" },{"tag": "device", "value": "%s"}]
}

链接 DocumentDB,插入批量数据

import pymongo
myclient = pymongo.MongoClient('mongodb://dbadmin:XXX@docdb.XXXXX.docdb.cn-north-1.amazonaws.com.cn:27017/?tls=true&tlsCAFile=rds-combined-ca-cn-bundle.pem&replicaSet=rs0&readPreference=s
econdaryPreferred&retryWrites=false')
data = [{"item1":"1"},{"item2":"2"},...]
db = myclient["dbname"]
col = db.col_test01
col.insert_many(data)
并行执行
from multiprocessing import Pool
p = Pool()for i in range(5):p.apply(func=insert_data, args=())p.close()p.join()

把以上连起来的最终代码

import pymongo
import sys
from multiprocessing import Pool
import random
import jsondef insert_data():myclient = pymongo.MongoClient('mongodb://dbadmin:XXX@docdb.XXXXX.docdb.cn-north-1.amazonaws.com.cn:27017/?tls=true&tlsCAFile=rds-combined-ca-cn-bundle.pem&replicaSet=rs0&readPreference=s
econdaryPreferred&retryWrites=false')for i in range(1000):data = []db = myclient["dbname"]col = db.col_test01for j in range(1000):enum_bool = ['true', 'false']enum_sexy = ['male', 'female']enum_city = ['Beijing','Shanghai','Guangzhou','Shenzhen','Hangzhou','Wuhan']enum_device = ['IOS','Android']random_id = random.randint(0,99999999)mobile = '138%s' % random_idemail = '%s@csdn.com' % random_idsmsConsent = random.choice(enum_bool)emailConsent = random.choice(enum_bool)sexual = random.choice(enum_sexy)city = random.choice(enum_city)device = random.choice(enum_device)insertdata = '''{"Id" : 1,"mobile": "%s","email": "%s","smsConsent": "%s","emailConsent": "%s","nextId": 1,"traits": [{"tag": "sexual", "value": "%s"},{"tag": "city", "value": "%s" },{"tag": "device", "value": "%s"}]}''' % (mobile,email,smsConsent,emailConsent,sexual,city,device)json_insertdata = json.loads(insertdata)data.append(json_insertdata)col.insert_many(data)if __name__ == '__main__':p = Pool()for i in range(5):p.apply(func=insert_data, args=())p.close()p.join()

相关内容

热门资讯

中衡设计(603017.SH)... 格隆汇4月22日丨中衡设计(603017.SH)发布2025年年报显示,公司全年实现营业收入11.7...
海港人寿总经理变更:齐美祝任临...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会!   每经记者|涂颖浩...
出息了!德国市长试乘贵州造无人...   2026年4月21日,德国东部城市开姆尼茨。市政厅门前,一辆圆润的胶囊状小巴缓缓驶出。车内坐着三...
谷歌推出AI训练与推理专用芯片...   核心要点谷歌将推出一款专门运行人工智能模型的芯片,同时推出另一款独立处理器用于模型训练。亚马逊也...
龙腾光电修订公司章程及多项治理... 4月23日,龙腾光电(证券代码:688055)发布公告称,公司于2026年4月22日召开第三届董事会...