Python 在没有孤立数据的情况下,MySQL将数据库中的数据量增加了一倍

Python 在没有孤立数据的情况下,MySQL将数据库中的数据量增加了一倍,python,mysql,database,Python,Mysql,Database,出于测试目的,我想将数据库中的数据量增加一倍 除了在表模式中循环外,还有更好的方法来实现这一点吗 从information_schema.tables中选择table_name,其中table_schema='' 对于结果中的表名称: 解释 基于表在python中创建对象 select*from 将这些数据填充到我们创建的对象中 将对象主键(GUID)更改为新的GUID,如果该主键存在于其他对象中的任何其他位置,则将其更改为相同的GUID 将新数据插入数据库 预期成果: 这将使数据库中的对象数量

出于测试目的,我想将数据库中的数据量增加一倍

除了在表模式中循环外,还有更好的方法来实现这一点吗

从information_schema.tables中选择table_name,其中table_schema=''

对于结果中的表名称:

解释

基于表在python中创建对象

select*from

将这些数据填充到我们创建的对象中

将对象主键(GUID)更改为新的GUID,如果该主键存在于其他对象中的任何其他位置,则将其更改为相同的GUID

将新数据插入数据库

预期成果:
这将使数据库中的对象数量增加一倍。

您不需要在Python中创建对象。您可以将表中的数据重新插入到表中:

insert into t
    select t.*
    from t;
这假设没有列是标识列(这可能是一个错误的假设)。因此,您需要列出以下列:

insert into t(col1, col2, . . .)
    select col1, col2, . . .
    from t;
不要包含标识列。让它得到它的默认值。如果未设置标识,则可能需要执行以下操作:

insert into t(col1, col2, . . .)
    select t.id + maxid + 1, col1, col2, . . .
    from t cross join
         (select max(id) as maxid from t) m;
对于UUID,您将使用函数生成一个新密钥


但是,此操作不需要将数据移到数据库之外。

这也假定在数据库中正确设置了外键关系,对吗?我不确定,caseOP总是希望数据库中的数据翻倍,所以我觉得只需将一个表复制到一个新表中,就可以减少标识problem@cricket_007 . . . 此答案中没有任何内容建议创建新表。查询只是将表的数据重新插入到同一个表中。我知道,这可能会起作用,但我只是建议类似“insert into table2 select*from table1”的内容也会使表的大小增加一倍database@cricket_007 . . . 这是这个答案中的第一个建议。