我正在生成大约100,000行随机数据,大约有10列,我需要让所有值都是唯一的。
我能想到这样做的唯一可靠方法是对每个随机生成进行查询,以确保它不存在,但这会增加数十万个查询。另一个选择是在表上创建一个UNIQUE约束,但是我需要有一些方法来计算有多少重复失败,这样我就可以重新创建那些行(我需要知道我将生成完全相同的随机行数)如指定的那样,或者在插入失败时使用新生代重试的东西。有没有办法做到这一点?或者我是否一起错过了其他一些方法?
答案 0 :(得分:2)
我应该在列表中生成python中的随机数。 然后,使用set来获取唯一身份。
l = [1,5,5,4,5,4,8,9,2]
set(l)
set([1, 2, 4, 5, 8, 9])
现在,您可以生成200.000个数字,以获得至少100.000个唯一数字,并截断列表,或等等。
我试过了:
import random
l = []
for i in range (200000):
l.append (random.random())
print len(set(l))
它给了我一套200.000的长度。生成的随机内没有重复!
答案 1 :(得分:0)
您填写列的数据类型是什么?是否必须遵循任何特定格式?
无论数据格式如何,我都会离线生成所有数据,然后一次性将其插入数据库。
例如:
from base64 import b64encode
from random import shuffle
arr=[]
for i in range(0,1000000): #Assuming you need 1mil entries
arr.append(b64encode(str(i)))
shuffle(arr)
#Add arr[] to the database
这样你知道所有的字符串都是唯一的,而shuffle会使订单(更多)随机。