Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » бэкап/перенос данных из БД средствами django/python ( mysql --> pg ) [RSS Feed]

#1 Ноя. 27, 2011 22:40:56

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

бэкап/перенос данных из БД средствами django/python ( mysql --> pg )

Есть сайт на django. В качестве СУБД используется mysql. Необходимо перенести данные из mysql в postgresql. Пробовал сделать бэкап и затем конвертировать с помощью mysql2pgsql.perl, однако возникли ошибки и сконвертированный файл в pg не затянулся. Возможно, есть какое-то другое решение перенести данные (может через pickle)?



Офлайн

#2 Ноя. 28, 2011 08:20:23

appetito
От:
Зарегистрирован: 2010-09-28
Сообщения: 147
Репутация: +  2  -
Профиль   Отправить e-mail  

бэкап/перенос данных из БД средствами django/python ( mysql --> pg )

экспорт/импорт в json?(_)



Офлайн

#3 Ноя. 30, 2011 09:10:00

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

бэкап/перенос данных из БД средствами django/python ( mysql --> pg )

не, лучше в pickle все таки.
вот пример кода на консервирование:

# -*- coding: utf-8 -*-

import pickle
from site.prilozhenie.models import *

models={Oblast:'oblast.pickle',
Oblast_raion:'oblast_raion.pickle',
City:'city.pickle',District:'district.pickle',
Street:'street.pickle',Flats:'flats.pickle',
PhotoFlats:'photoflats.pickle',Houses:'houses.pickle',
PhotoHouses:'photohouses.pickle'}

def pickle_to():
for model in models.keys():
fl=open(models[model],'wb')
a=model.objects.all()
pickle.dump(a,fl)
fl.close
Получаем законсервированные экземпляры объектов. Каждый - в отдельном файле.
А вот как расконсервировать?
def pickle_from():
for model in models.keys():
fl=open(models[model],'rb')
from_pickled=pickle.load(fl)
model.objects.all().delete() #перед внесением свежих данных в новую бд удаляем из нее все старые данные
for row in from_pickled:
model.objects.create(field1=from_pickled.field1,
field2=from_pickled.field2,
field3=from_pickled.field3,
field4=from_pickled.field4)
Проблема вот в этом куске:
            model.objects.create(field1=from_pickled.field1,
field2=from_pickled.field2,
field3=from_pickled.field3,
field4=from_pickled.field4)
Ведь в каждой модели свои поля. Я могу получить перечень полей с помощью model.__doc__. Но мне получается в параметры objects.create() надо каким-то образом завернуть наименования полей, имеющихся в данной модели и значения этих полей из законсервированного объекта “from_pickled”. Цикл тут не вставишь. Какие могут быть еще варианты?



Отредактировано (Ноя. 30, 2011 09:11:02)

Офлайн

#4 Ноя. 30, 2011 12:41:30

appetito
От:
Зарегистрирован: 2010-09-28
Сообщения: 147
Репутация: +  2  -
Профиль   Отправить e-mail  

бэкап/перенос данных из БД средствами django/python ( mysql --> pg )

может всё-таки лучше в json?(ДОКА)



Офлайн

#5 Ноя. 30, 2011 15:07:22

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

бэкап/перенос данных из БД средствами django/python ( mysql --> pg )

Большое спасибо. Все получилось.



Офлайн

  • Начало
  • » Django
  • » бэкап/перенос данных из БД средствами django/python ( mysql --> pg )[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version