Форум сайта python.su
Всем привет. Есть такая задачка, нужно выдернуть строку из таблицы, удалить ее, и потом заинсертить заново с этими же данными.
Буду очень признателен за помощь
#!/usr/bin/env python# -*- coding: utf-8 -*- import MySQLdb def csv_to_sqls(): i = 0 file = open("delete.txt", "r") file_w = open("deletedd.txt", "w") conn = MySQLdb.connect (host = "localhost", user = "root", passed = "sss", db = "yes") cursor = conn.cursor () while 1: line = file.readline() if not line: break line = line.strip() line = line.split(";") sql = cursor.execute ("select * from user where id = {0}".format(line[0])) sql = cursor.fetchone () sql = cursor.execute ("delete from user where id = {0}".format(line[0])) ## И вот здесь непонятно как перегнать все что выбрали из select в insert sql = cursor.execute("insert into user values(%s)" % ) conn.commit() file_w.write(str(sql) + '\n') cursor.close () conn.close () file.close() file_w.close() csv_to_sqls() [code]
Отредактировано iga (Окт. 18, 2012 23:10:45)
Офлайн
Так может replace вместо delete, insert использовать?
Офлайн
Lexander
Так может replace вместо delete, insert использовать?К сожалению не получается из-за foreign keys.
Офлайн
Можно поинтересоваться, а в чем смысл данного действия?
Офлайн
Нужно, что бы произошла “перерепликация” этих записей на слейв сервер, где их по некоторым причинам нет.
З.Ы. сделать дамп и развернуть заново нет возможности. Если у кого возникнет такой совет:)
Офлайн
Можно попробовать создать временную таблицу, скопировать туда все содержимое текущей и очистить ее.
Ну а затем повторить все в обратном порядке и удалить временную таблицу.
Офлайн
Либо на мастере сделать дамп, очистить таблицу и затем залить этот дамп.
Офлайн
Нельзя на местере делать дамп. Эта таблица уже давно такая “толстая”, что дамп лочит ее минут на 10, я уже молчу на сколько будет залочено при обратном процессе. Поэтому и получается велосипед.
Офлайн
А storage engine для таблицы какой?
Офлайн
P.S. Если не секрет, а что за приложение использует эту базу данных?
Офлайн