Python 在随机生成MySQL行时确保字段的唯一性
我正在生成大约100000行随机数据,大约有10列,我需要所有的值都是唯一的Python 在随机生成MySQL行时确保字段的唯一性,python,mysql,unique-constraint,mysql-python,Python,Mysql,Unique Constraint,Mysql Python,我正在生成大约100000行随机数据,大约有10列,我需要所有的值都是唯一的 我能想到的唯一可靠的方法是对每个随机生成进行查询,以确保它还不存在,但这会增加数十万个查询。另一种选择是在表上创建一个唯一的约束,但是我需要有一些方法来计算有多少重复失败,这样我就可以重新创建那些行(我需要知道我将生成与指定数量完全相同的随机行),或者在插入失败时使用新一代进行重试。有办法吗?还是我遗漏了其他方法?我应该用python在列表中生成随机数。 然后,使用set获得unique l = [1,5,5,4,5,
我能想到的唯一可靠的方法是对每个随机生成进行查询,以确保它还不存在,但这会增加数十万个查询。另一种选择是在表上创建一个唯一的约束,但是我需要有一些方法来计算有多少重复失败,这样我就可以重新创建那些行(我需要知道我将生成与指定数量完全相同的随机行),或者在插入失败时使用新一代进行重试。有办法吗?还是我遗漏了其他方法?我应该用python在列表中生成随机数。 然后,使用set获得unique
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))
它给了我一套长度为200000的。生成的随机数据中没有DUP 您要在列中填充哪些类型的数据?它必须遵循任何特定的格式吗 不管数据格式如何,我都会离线生成所有数据,然后一次性将其插入数据库 例如:
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
这样,您就知道所有字符串都是唯一的,而无序排列将使顺序(更)随机。您是如何生成随机值的?数据类型?这似乎是最好的解决方案。需要生成额外的数字是一件非常痛苦的事情,特别是因为我必须生成2 x(cols的数量)-或者大约,10 cols需要2 mil。