Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use Django ORM as standalone [duplicate]

Possible Duplicates:
Use only some parts of Django?
Using only the DB part of Django

I want to use the Django ORM as standalone. Despite an hour of searching Google, I'm still left with several questions:

  • Does it require me to set up my Python project with a setting.py, /myApp/ directory, and modules.py file?
  • Can I create a new models.py and run syncdb to have it automatically setup the tables and relationships or can I only use models from existing Django projects?
  • There seems to be a lot of questions regarding PYTHONPATH. If you're not calling existing models is this needed?

I guess the easiest thing would be for someone to just post a basic template or walkthrough of the process, clarifying the organization of the files e.g.:

db/    __init__.py    settings.py    myScript.py orm/    __init__.py    models.py 

And the basic essentials:

# settings.py from django.conf import settings  settings.configure(      DATABASE_ENGINE   = "postgresql_psycopg2",      DATABASE_HOST     = "localhost",      DATABASE_NAME     = "dbName",      DATABASE_USER     = "user",      DATABASE_PASSWORD = "pass",      DATABASE_PORT     = "5432" )  # orm/models.py # ...  # myScript.py # import models.. 

And whether you need to run something like: django-admin.py inspectdb ...

(Oh, I'm running Windows if that changes anything regarding command-line arguments.).

like image 250
KeyboardInterrupt Avatar asked Jun 02 '09 02:06

KeyboardInterrupt


People also ask

Can I use Django ORM standalone?

Django is one of the popular python frameworks; critiques have argued that it is a bloated framework. The truth of the matter is that it is very modularized, and each of the components () can be independently used.

Is Django ORM good?

The Django ORM is a very powerful tool, and one of the great attractions of Django. It makes writing simple queries trivial, and does a great job of abstracting away the database layer in your application. And sometimes, you shouldn't use it.

Which ORM is used in Django and Flask?

Django ORM vs SQLAlchemy Those of you from a Flask background will most likely have used SQLAlchemy for your Object Relational Mapper (ORM) needs. SQLAlchemy is an extremely powerful framework that gives you as much or as little control over your database as you need.

What is ORM query in Django?

ORM stands for Object Relation Mapper. Django ORM is a powerful and elegant way to interact with the database. The Django ORM is an abstraction layer that allows us to play with the database. In the end, Django ORM will convert all operations into SQL statements.


1 Answers

Ah ok I figured it out and will post the solutions for anyone attempting to do the same thing.

This solution assumes that you want to create new models.

First create a new folder to store your files. We'll call it "standAlone". Within "standAlone", create the following files:

__init__.py myScript.py settings.py 

Obviously "myScript.py" can be named whatever.

Next, create a directory for your models.

We'll name our model directory "myApp", but realize that this is a normal Django application within a project, as such, name it appropriately to the collection of models you are writing.

Within this directory create 2 files:

__init__.py models.py 

Your going to need a copy of manage.py from an either an existing Django project or you can just grab a copy from your Django install path:

django\conf\project_template\manage.py 

Copy the manage.py to your /standAlone directory. Ok so you should now have the following structure:

\standAlone     __init__.py     myScript.py     manage.py     settings.py \myApp     __init__.py     models.py 

Add the following to your myScript.py file:

# settings.py from django.conf import settings  settings.configure(     DATABASE_ENGINE    = "postgresql_psycopg2",     DATABASE_NAME      = "myDatabase",     DATABASE_USER      = "myUsername",     DATABASE_PASSWORD  = "myPassword",     DATABASE_HOST      = "localhost",     DATABASE_PORT      = "5432",     INSTALLED_APPS     = ("myApp") )  from django.db import models from myApp.models import * 

and add this to your settings.py file:

    DATABASE_ENGINE    = "postgresql_psycopg2"     DATABASE_NAME      = "myDatabase"     DATABASE_USER      = "myUsername"     DATABASE_PASSWORD  = "myPassword"     DATABASE_HOST      = "localhost"     DATABASE_PORT      = "5432",     INSTALLED_APPS     = ("myApp") 

and finally your myApp/models.py:

# myApp/models.py from django.db import models  class MyModel(models.Model):      field = models.CharField(max_length=255) 

and that's it. Now to have Django manage your database, in command prompt navigate to our /standalone directory and run:

manage.py sql MyApp 
like image 113
KeyboardInterrupt Avatar answered Oct 05 '22 20:10

KeyboardInterrupt