Django ORM без Джанги

Буду краток

Проблема: использовать прелести Django ORM, а он хорош, но для проекта, который не для веба.

Есть ответы на stackoverflow, а вот это я не пробовал.

Опишу свой путь

файл settings.py

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

import os
gettext = lambda s: s
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))


DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
 # ('Your Name', 'your_email@example.com'),
)

LANGUAGES = [
 ('ru', 'ru'),
]
DEFAULT_LANGUAGE = 0

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
 'NAME': os.path.join(PROJECT_PATH, 'crimson.sqlite'),
 'USER': '', # Not used with sqlite3.
 'PASSWORD': '', # Not used with sqlite3.
 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
 'PORT': '', # Set to empty string for default. Not used with sqlite3.
 }
}

TEST_DATABASE_CHARSET = "utf8"
TEST_DATABASE_COLLATION = "utf8_general_ci"

TIME_ZONE = 'Europe/Moscow'

LANGUAGE_CODE = 'ru-RU'

SITE_ID = 1

USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True


INSTALLED_APPS = (
# 'django.contrib.auth',
# 'django.contrib.contenttypes',
# 'django.contrib.sessions',
# 'django.contrib.sites',
# 'django.contrib.messages',
# 'django.contrib.staticfiles',
 'src.data_utils',
 'src.crimsonmap',
)

Создаём у себя в корне проекта такой файл.

Затем, там же в папке проекта manage.py

#!/usr/bin/env python
from django.core.management import execute_manager
import imp
try:
 imp.find_module('settings') # Assumed to be in the same directory.
except ImportError:
 import sys
 sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
 sys.exit(1)

import settings

if __name__ == "__main__":
 execute_manager(settings)

Ещё создаём пустой файл init.py

И файл urls.py

from django.conf.urls.defaults import patterns, include, url

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
 # Examples:
 # url(r'^$', 'src.views.home', name='home'),
 # url(r'^src/', include('src.foo.urls')),

 # Uncomment the admin/doc line below to enable admin documentation:
 # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

 # Uncomment the next line to enable the admin:
 # url(r'^admin/', include(admin.site.urls)),
)

Теперь создаём папку с аппом, в котором будет лежать модель у меня это src -<--- корень проекта, crimsonmap, это поддиректория src/crimsonmap В этой поддиректории создаём пустой файл: init.py - это для того чтобы джанга поняла, что тут лежит апп models.py

# coding: utf-8
from django.utils.translation import ugettext_lazy as _
from django.db import models

class Terrarian(models.Model):
   ter_type = models.CharField(verbose_name=_('terrarian type'), max_length=20)
   ter_color = models.CharField(verbose_name=_('terrarian color html'), max_length=20, default = 'red')
   ter_hunting = models.FloatField(verbose_name=_('ter hunting percent'), default=0)
   ter_meeting = models.FloatField(verbose_name=_('ter meeting percent'), default=0)
   player_maybehere = models.BooleanField(_('player may be here'), default=True)

Дальше как обычно из /src:

python manage.py syncdb

создастся база данных и радость

И затем, когда нужно использовать нашу базу:

import os
os.environ["DJANGO_SETTINGS_MODULE"] = "settings"
from models import Terrarian

Есть ещё пацанский метод заполнения базы данных, если кому нужно пишите в комментах, опишу, так лень.


Anshik в разное Вт. 29 Май 2012. Tags: Django,


© Anshik 2012-2015