Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2012 23:06:57

iga
От:
Зарегистрирован: 2011-05-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

Всем привет. Есть такая задачка, нужно выдернуть строку из таблицы, удалить ее, и потом заинсертить заново с этими же данными.
Буду очень признателен за помощь

#!/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)

Офлайн

#2 Окт. 18, 2012 23:41:42

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

MySQL select to insert

Так может replace вместо delete, insert использовать?



Офлайн

#3 Окт. 19, 2012 01:06:42

iga
От:
Зарегистрирован: 2011-05-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

Lexander
Так может replace вместо delete, insert использовать?
К сожалению не получается из-за foreign keys.



Офлайн

#4 Окт. 19, 2012 10:15:36

masterito
От:
Зарегистрирован: 2011-06-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

Можно поинтересоваться, а в чем смысл данного действия?



Офлайн

#5 Окт. 19, 2012 12:43:09

iga
От:
Зарегистрирован: 2011-05-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

Нужно, что бы произошла “перерепликация” этих записей на слейв сервер, где их по некоторым причинам нет.
З.Ы. сделать дамп и развернуть заново нет возможности. Если у кого возникнет такой совет:)



Офлайн

#6 Окт. 19, 2012 12:59:52

masterito
От:
Зарегистрирован: 2011-06-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

Можно попробовать создать временную таблицу, скопировать туда все содержимое текущей и очистить ее.
Ну а затем повторить все в обратном порядке и удалить временную таблицу.



Офлайн

#7 Окт. 19, 2012 13:01:10

masterito
От:
Зарегистрирован: 2011-06-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

Либо на мастере сделать дамп, очистить таблицу и затем залить этот дамп.



Офлайн

#8 Окт. 19, 2012 13:20:53

iga
От:
Зарегистрирован: 2011-05-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

Нельзя на местере делать дамп. Эта таблица уже давно такая “толстая”, что дамп лочит ее минут на 10, я уже молчу на сколько будет залочено при обратном процессе. Поэтому и получается велосипед.



Офлайн

#9 Окт. 19, 2012 13:25:10

masterito
От:
Зарегистрирован: 2011-06-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

А storage engine для таблицы какой?



Офлайн

#10 Окт. 19, 2012 13:31:20

masterito
От:
Зарегистрирован: 2011-06-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

MySQL select to insert

P.S. Если не секрет, а что за приложение использует эту базу данных?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version