Буду краток.
Проблема: использовать прелести Django ORM, а он хорош, но для проекта, который не для веба.
Есть ответы на stackoverflow
http://stackoverflow.com/questions/579511/using-only-the-db-part-of-django
а вот это я не пробовал
http://pypi.python.org/pypi/django-standalone
Опишу свой путь:
файл
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
Дальше как обычно из /src:
python manage.py syncdb
создастся база данных и радость
И затем, когда нужно использовать нашу базу:
import os
os.environ["DJANGO_SETTINGS_MODULE"] = "settings"
from models import Terrarian
Есть ещё пацанский метод заполнения базы данных, если кому нужно пишите в комментах, опишу, так лень.
Проблема: использовать прелести Django ORM, а он хорош, но для проекта, который не для веба.
Есть ответы на stackoverflow
http://stackoverflow.com/questions/579511/using-only-the-db-part-of-django
а вот это я не пробовал
http://pypi.python.org/pypi/django-standalone
Опишу свой путь:
файл
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)
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
Есть ещё пацанский метод заполнения базы данных, если кому нужно пишите в комментах, опишу, так лень.
Комментариев нет:
Отправить комментарий