Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > using only the django ORM (DB access model) and nothing else.

Reply
Thread Tools

using only the django ORM (DB access model) and nothing else.

 
 
News123
Guest
Posts: n/a
 
      06-21-2011
Hi,

I have a small application running on a host without web server and
without any need for django except its ORM accessing data bases without
explicitely writing sql queries.)

I assume there's many libraries (SQL Alchemy or others), which could do
this job. and which migh have less overhead than django.

As I am already implementing a web server application with django on
another host I wanted to use the same syntax / API for my non web
application.

Now my question:

What would be the minimal setup required to use django orms and nothing
else.


What entries could I remove from settings.py
would I still have to add INSATLLED_APPS to the settings or could I just
write one script

defining only defining settings.DATABASES, and the typical contents of
models.py of an application.


Thanks in advance for some suggestions or ideas how you would approach
writing a tiny non web application with django.db.models.Models

 
Reply With Quote
 
 
 
 
News123
Guest
Posts: n/a
 
      06-22-2011
On 06/22/2011 01:51 AM, News123 wrote:
> Hi,
>
> I have a small application running on a host without web server and
> without any need for django except its ORM accessing data bases without
> explicitely writing sql queries.)
>
> I assume there's many libraries (SQL Alchemy or others), which could do
> this job. and which migh have less overhead than django.
>
> As I am already implementing a web server application with django on
> another host I wanted to use the same syntax / API for my non web
> application.
>
> Now my question:
>
> What would be the minimal setup required to use django orms and nothing
> else.
>
>
> What entries could I remove from settings.py
> would I still have to add INSATLLED_APPS to the settings or could I just
> write one script
>
> defining only defining settings.DATABASES, and the typical contents of
> models.py of an application.
>
>
> Thanks in advance for some suggestions or ideas how you would approach
> writing a tiny non web application with django.db.models.Models
>

I made a very first brute force test:

settings.py: (only DATABASES is set)
=======================================
import os
MYDIR = os.path.abspath(os.path.dirname(__file__))

DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(MYDIR, "tiny.db"),
'HOST': '',
'USER': '',
'PASSWORD': '',
'PORT': '',
}
}


myapp.py
==========
#!/usr/bin/env python
import os

# just set the env prior to importing a django module
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.db import models

print "yes this line is executed"

# this will fail
class Mini(models.Model):
name = models.CharField(max_length=80)




###############################################
If running myapp.py I get following output:

yes this line is executed
Traceback (most recent call last):
File "./myapp.py", line 11, in <module>
class Mini(models.Model):
File
"/opt/my_python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/db/models/base.py",
line 52, in __new__
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
IndexError: list index out of range
(my_python)n1234@mypc:~/minidjango$


So I need at least a little more to make my script work.










 
Reply With Quote
 
 
 
 
Roy Smith
Guest
Posts: n/a
 
      06-22-2011
In article <4e012e8d$0$23682$>,
News123 <> wrote:

> Hi,
>
> I have a small application running on a host without web server and
> without any need for django except its ORM accessing data bases without
> explicitely writing sql queries.)


You would do much better to ask this question on the django mailing list
(http://groups.google.com/group/django-users).


> I assume there's many libraries (SQL Alchemy or others), which could do
> this job. and which migh have less overhead than django.


Ugh. I've played with SQL Alchemy a few times and every time I've run
away screaming in the other direction. I can see how it's useful if you
need to be totally cross-platform, but, man, if that's what it takes to
be cross platform, I'm happy being a MySQL bigot all day long.

> As I am already implementing a web server application with django on
> another host I wanted to use the same syntax / API for my non web
> application.
>
> Now my question:
>
> What would be the minimal setup required to use django orms and nothing
> else.


I don't see any reason you couldn't use the Model layer by itself, if
you want to. It pretty much stands on its own.
 
Reply With Quote
 
Ian Kelly
Guest
Posts: n/a
 
      06-22-2011
On Tue, Jun 21, 2011 at 6:42 PM, News123 <> wrote:
> ###############################################
> If running myapp.py I get following output:
>
> yes this line is executed
> Traceback (most recent call last):
> *File "./myapp.py", line 11, in <module>
> * *class Mini(models.Model):
> *File
> "/opt/my_python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/db/models/base.py",
> line 52, in __new__
> * *kwargs = {"app_label": model_module.__name__.split('.')[-2]}
> IndexError: list index out of range
> (my_python)n1234@mypc:~/minidjango$
>
>
> So I need at least a little more to make my script work.


There's a bit of magic in the way Django finds things, and I think
you'll still need to keep the basic structure of a Django project --
models should be in a "models.py" file located in an "app" package,
which should be included in the INSTALLED_APPS setting. You just
won't have any views or urlconfs or templates or admin sites or
anything like that.
 
Reply With Quote
 
News123
Guest
Posts: n/a
 
      06-22-2011
It seems I found a solution (refer to end of this tessage).

Not sure though if there are any drawbacks or if this method of working
could cause any other issues.


On 06/22/2011 02:42 AM, News123 wrote:
> On 06/22/2011 01:51 AM, News123 wrote:
>> Hi,
>>
>> I have a small application running on a host without web server and
>> without any need for django except its ORM accessing data bases without
>> explicitely writing sql queries.)
>>
>> I assume there's many libraries (SQL Alchemy or others), which could do
>> this job. and which migh have less overhead than django.
>>
>> As I am already implementing a web server application with django on
>> another host I wanted to use the same syntax / API for my non web
>> application.
>>
>> Now my question:
>>
>> What would be the minimal setup required to use django orms and nothing
>> else.
>>
>>
>> What entries could I remove from settings.py
>> would I still have to add INSATLLED_APPS to the settings or could I just
>> write one script
>>
>> defining only defining settings.DATABASES, and the typical contents of
>> models.py of an application.
>>
>>
>> Thanks in advance for some suggestions or ideas how you would approach
>> writing a tiny non web application with django.db.models.Models
>>

> I made a very first brute force test:
>
> settings.py: (only DATABASES is set)
> =======================================
> import os
> MYDIR = os.path.abspath(os.path.dirname(__file__))
>
> DATABASES = {
> 'default' : {
> 'ENGINE': 'django.db.backends.sqlite3',
> 'NAME': os.path.join(MYDIR, "tiny.db"),
> 'HOST': '',
> 'USER': '',
> 'PASSWORD': '',
> 'PORT': '',
> }
> }
>
>
> myapp.py
> ==========
> #!/usr/bin/env python
> import os
>
> # just set the env prior to importing a django module
> os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
> from django.db import models
>
> print "yes this line is executed"
>
> # this will fail
> class Mini(models.Model):
> name = models.CharField(max_length=80)
>
>
>
>
> ###############################################
> If running myapp.py I get following output:
>
> yes this line is executed
> Traceback (most recent call last):
> File "./myapp.py", line 11, in <module>
> class Mini(models.Model):
> File
> "/opt/my_python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/db/models/base.py",
> line 52, in __new__
> kwargs = {"app_label": model_module.__name__.split('.')[-2]}
> IndexError: list index out of range
> (my_python)n1234@mypc:~/minidjango$
>
>
> So I need at least a little more to make my script work.
>



directory structure is now

settings.py
myapp/__init__.py
myapp/models.py
tst.py

settings.py
------------
import os
MYDIR = os.path.abspath(os.path.dirname(__file__))

DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(MYDIR, "tiny.db"),
'HOST': '',
'USER': '',
'PASSWORD': '',
'PORT': '',
}
}

INSTALLED_APPS = (
'myapp',
)


myapp/models.py
----------------
from django.db import models

class Mini(models.Model):
name = models.CharField(max_length=80)


tst.py
-------
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import myapp.models as mymodels

for name in ["one", "two", "three"]:
mymodels.Mini(name=name).save()

print mymodels.Mini.objects.all().values()




now I can call syncdb with:
django-admin syncdb --settings=settings --pythonpath=`pwd`


and run my test app with

 
Reply With Quote
 
News123
Guest
Posts: n/a
 
      06-22-2011
On 06/22/2011 03:04 AM, Ian Kelly wrote:
>>
>> So I need at least a little more to make my script work.

>
> There's a bit of magic in the way Django finds things, and I think
> you'll still need to keep the basic structure of a Django project --
> models should be in a "models.py" file located in an "app" package,
> which should be included in the INSTALLED_APPS setting. You just
> won't have any views or urlconfs or templates or admin sites or
> anything like that.


Hi Ian,

Thanks for your answer.
Ourt messages crossed. I had exactly the same idea and started playing..
and you are right.

The settings module needs only
DATABASES
and INSTALLED_APPS with one app

and in the apps dir I need apart from the compulsory __init__.py only
models.py

Cool






 
Reply With Quote
 
News123
Guest
Posts: n/a
 
      06-22-2011
On 06/22/2011 03:02 AM, Roy Smith wrote:
> In article <4e012e8d$0$23682$>,
> News123 <> wrote:
>
>
> I don't see any reason you couldn't use the Model layer by itself, if
> you want to. It pretty much stands on its own.


Thanks a lot for confirming,

I have now my small example.

Just wanted to be sure I don't overlook some tiny, but really annoying
detail which would strongly advise against using the model outside of a
web framework.



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
re module: Nothing to repeat, but no sre_constants.error: nothing torepeat ? Devin Jeanpierre Python 2 02-14-2012 01:33 PM
Converting MS Access DB to Postgres or MySQL for ORM support withSQLalchemy Alec Taylor Python 2 11-30-2011 02:55 PM
Using django ORM from web browser and from command line apps News123 Python 5 06-22-2011 10:57 AM
Question on Django and Django Book John Posner Python 0 11-13-2010 06:55 PM
ORM recommendation when using "live"/predefined DB? Phillip B Oldham Python 2 01-28-2009 11:31 AM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57