django-admin.py dumpdata для операторов SQL - PullRequest
3 голосов
/ 04 мая 2011

Я пытаюсь вывести свои данные в операторы SQL. django-admin.py dumpdata предоставляет только json, xml, yaml. так:

  1. кто-нибудь знает хороший способ сделать это?!

  2. Я пробовал это:

    def sqldumper (модель):

    result = ""
    units = model.objects.all().values()
    for unit in units:
        statement = "INSERT INTO myapp.model "+str(tuple(unit.keys())).replace("'", "")+" VALUES " + str(tuple(unit.values()))+"\r\n"
        result+=statement
    return result
    

поэтому я сам пересматриваю значения модели и сам делаю оператор INSERT. затем я подумал об использовании «django-admin.py sql» для получения инструкции «CREATE» ... но потом я не знаю, как использовать эту строку из моего кода (а не из командной строки). Я пробовал os.popen и os.system, но на самом деле это не работает .. какие-нибудь советы по этому поводу?

Я изложу это ясно: как вы используете "manage.py sql" из своего кода?

Я добавляю что-то вроде этого на мой взгляд:

import os, sys
import imp
from django.core.management import execute_manager

sys_argv_backup = sys.argv
imp.find_module("settings")
import settings
sys.argv = ['','sql','myapp']
execute_manager(settings)
sys.argv = sys_argv_backup

Дело в том, что это работает .. но он пишет заявления в стандартный вывод ... это что-то, но не идеально. Я попробую использовать django.core.management.sql.sql_create напрямую, посмотрим, как это будет ..

спасибо

1 Ответ

3 голосов
/ 04 мая 2011

Я предлагаю использовать специфическую для SQL программу дампа (например, mysqldump для MySQL).

Для sqlite, встроенного в Python, вы можете посмотреть в этом примере без участияДжанго:

# Convert file existing_db.db to SQL dump file dump.sql
import sqlite3, os

con = sqlite3.connect('existing_db.db')
with open('dump.sql', 'w') as f:
    for line in con.iterdump():
        f.write('%s\n' % line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...