Итак, по сути, идея состоит в том, чтобы предоставить команде разработчиков запутанный дамп MySQL.< /p>
Дамп полон операторов INSERT с электронными письмами клиентов, и идея состоит в том, чтобы заменить имена пользователей случайными хэшами (случайность важна из-за индексов UNIQ), а также заменить имя домена.
Дамп полон операторов INSERT с электронными письмами клиентов, и идея состоит в том, чтобы заменить имена пользователей некоторыми случайными хэшами (случайность важна из-за индексов UNIQ), а также заменить имя домена. p>
Я пытался использовать re.sub, он справляется со своей задачей, но только если в каждой строке есть одно совпадение с регулярным выражением. К сожалению, операторы INSERT содержат много адресов электронной почты в одной строке, поэтому мне интересно, я что-то упускаю?
По сути, вот пример данных:
Код: Выделить всё
INSERT INTO `users` VALUES ('john','john@gmail.com','\0'),('kate','kate@yahoo.com','\0'),
INSERT INTO `users` VALUES ('peter','peter@gmail.com','\0'),
Код: Выделить всё
INSERT INTO `users` VALUES ('john','-**5196869426929071700**@example.com','\0'),('kate','-**5196869426929071700**@example.com','\0'),
INSERT INTO `users` VALUES ('peter','-4574418619379266923@example.com','\0'),
Код: Выделить всё
INSERT INTO `users` VALUES ('john','-**5196869426929071700**@example.com','\0'),('kate','-**7140769694376981046**@example.com','\0'),
INSERT INTO `users` VALUES ('peter','-4574418619379266923@example.com','\0'),
Код: Выделить всё
import re
with open("dump.sql", "r") as file:
lines = file.readlines()
def repl(match):
output = str(hash(line)) + "@example.com"
return output
new_lines = []
for line in lines:
new_lines.append(re.sub('([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,})', repl, line))
with open("dump-processed.sql", "w") as file:
file.writelines(new_lines)
Подробнее здесь: https://stackoverflow.com/questions/761 ... -dump-file