как использовать django.core.management.sql.sql_create? - PullRequest
0 голосов
/ 04 мая 2011

Я хочу использовать эту функцию: django.core.management.sql.sql_create, на мой взгляд, чтобы получить операторы "CREATE"

функция получает 3 аргумента:

app,стиль, связь

что такое "приложение" ??Это конкретный объект или только имя приложения?!

Я знаю, стиль связан с цветами ... Я считаю, что django.core.management.color.colorstyle () должен работать ..

как насчет соединения, как мне получить это?

спасибо

========================== отредактировано отсюда вниз

хорошо, через некоторое время я понял, с чем я закончил:


def sqldumper(model):
    """gets a db model, and returns the SQL statements to build it on another SQL-able db"""
    #This is how django inserts a new record
    #u'INSERT INTO "polls_poll" ("question", "pub_date") VALUES (GE!!, 2011-05-03 15:45:23.254000)'

    result = "BEGIN;\n"
    #add CREATE TABLE statements
    result+= '\n'.join(sql_create(models.get_app('polls'), color_style(), connections.all()[0]))+"\n"
    result+= '\n'.join(sql_custom(models.get_app('polls'), color_style(), connections.all()[0]))+"\n"
    result+= '\n'.join(sql_indexes(models.get_app('polls'), color_style(), connections.all()[0]))+"\n"
    result+= '\n'

    #add INSERT INTO staetements
    units = model.objects.all().values()
    for unit in units:
        statement = "INSERT INTO yourapp.model "+str(tuple(unit.keys()))+" VALUES " + str(tuple(unit.values()))+"\n"
        result+=statement

    result+="\nCOMMIT;\n"
    return result.encode('utf-8')

это все еще немного странно, потому что выполучите CREATE TABLE для всего приложения, но INSERT INTO только для запрашиваемой вами модели .... но это можно исправить здесь

1 Ответ

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

Это модуль models.py, который можно найти в одном из ваших приложений:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'myproject.myapp',
    )

Когда я его напечатал, я получил < module 'myproject.myapp.models' from '...' >.Я использовал эллипсы вместо того, чтобы набирать полный путь к файлу models.py.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...