Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在随机生成MySQL行时确保字段的唯一性_Python_Mysql_Unique Constraint_Mysql Python - Fatal编程技术网

Python 在随机生成MySQL行时确保字段的唯一性

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,

我正在生成大约100000行随机数据,大约有10列,我需要所有的值都是唯一的


我能想到的唯一可靠的方法是对每个随机生成进行查询,以确保它还不存在,但这会增加数十万个查询。另一种选择是在表上创建一个唯一的约束,但是我需要有一些方法来计算有多少重复失败,这样我就可以重新创建那些行(我需要知道我将生成与指定数量完全相同的随机行),或者在插入失败时使用新一代进行重试。有办法吗?还是我遗漏了其他方法?

我应该用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。