2009-06-02 15 views
45

संभावित डुप्लिकेट:
Use only some parts of Django?
Using only the DB part of Djangoउपयोग Django ORM के रूप में स्टैंडअलोन

मैं स्टैंडअलोन के रूप में Django ORM उपयोग करना चाहते हैं।

  • यह मुझे एक setting.py,/MyApp/निर्देशिका, और modules.py फ़ाइल के साथ अपने अजगर परियोजना स्थापित करने की आवश्यकता होती है: गूगल खोज के एक घंटे के बावजूद, मैं अभी भी कई सवाल के साथ छोड़ दिया हूँ?
  • मैं एक नया models.py बना सकते हैं और चलाने syncdb यह स्वचालित रूप से सेटअप टेबल और रिश्तों या मैं केवल मॉडल मौजूदा Django परियोजनाओं से उपयोग कर सकते हैं करने के लिए कर सकते हैं?
  • वहाँ PYTHONPATH के बारे में सवाल का एक बहुत हो रहा है। यदि आप मौजूदा मॉडल को कॉल नहीं कर रहे हैं तो क्या इसकी आवश्यकता है?

मुझे लगता है कि किसी को सिर्फ एक बुनियादी टेम्पलेट या प्रक्रिया का पूर्वाभ्यास पोस्ट करने के लिए, फ़ाइलों के संगठन को स्पष्ट करने के लिए सबसे आसान बात होगी जैसे:

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

और बुनियादी अनिवार्य:

# 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.. 

और आप की तरह कुछ चलाने की आवश्यकता है कि क्या: django-admin.py inspectdb ...

(ओह, मैं चल रहा हूँ विंडोज़ अगर यह कमांड लाइन तर्कों के बारे में कुछ भी बदलता है।)।

+1

सवाल विलियम Brendel से जुड़े हुए सर्वश्रेष्ठ उत्तर है, लेकिन यह भी देखना http://stackoverflow.com/questions/ कुछ और चर्चा के लिए 579511। –

+0

मुझे आश्चर्य है कि कैसे आपने "1 घंटे के लिए Google की खोज की" और वैन गैले और विलियम ब्रेन्डेल की टिप्पणियों से प्रश्नों को इंगित किया। –

+1

यह "सटीक डुप्लिकेट" नहीं है - जबकि उस पोस्ट ने मुझे जवाब खोजने में मदद की, यह वह नहीं था जिसे मैं ढूंढ रहा था। मुझे उम्मीद है कि "सटीक डुप्लिकेट" के रूप में बंद किया गया है, मेरे समाधान की खोज क्षमता को नीचे नहीं बदलता है क्योंकि यह बहुत अधिक गहन है और मॉडल बनाने के लिए कैसे कहीं और कंक नहीं किया जाता है। – KeyboardInterrupt

उत्तर

26

आह ठीक मैं यह पता लगा और एक ही बात करने की कोशिश कर किसी के लिए भी समाधान पोस्ट करेंगे।

यह समाधान मानता है कि आप नए मॉडल बनाना चाहते हैं।

सबसे पहले अपनी फ़ाइलें संग्रहीत करने के लिए एक नया फ़ोल्डर बनाने के। हम इसे "स्टैंडअलोन" कहते हैं। "स्टैंडअलोन" में, निम्न फ़ाइलों को बनाने:

__init__.py 
myScript.py 
settings.py 

जाहिर है "myScript.py" जो कुछ भी नाम दिया जा सकता है।

इसके बाद, अपने मॉडल के लिए एक निर्देशिका बनाने।

हम अपने मॉडल निर्देशिका "MyApp" नाम है, लेकिन पता है कि यह एक परियोजना के भीतर एक सामान्य Django आवेदन, इस तरह, नाम के रूप में यह उचित रूप से मॉडलों के संग्रह करने के लिए आप लिख रहे हैं है जाएगा।

इस निर्देशिका में 2 फ़ाइलों को बनाने:

__init__.py 
models.py 

आपका या तो एक मौजूदा Django परियोजना एक से manage.py की एक प्रति की जरूरत करने के लिए या जा रहा तुम सिर्फ अपने Django स्थापित पथ से एक प्रतिलिपि हड़पने कर सकते हैं:

django\conf\project_template\manage.py 

कॉपी अपने/स्टैंडअलोन निर्देशिका के लिए manage.py।ठीक है तो अब आपको निम्न संरचना होनी चाहिए:

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

अपने myScript.py फ़ाइल में निम्न जोड़ें:

# 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 * 

और अपने settings.py फ़ाइल से जोड़ें:

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

और अंत में आपका myApp/models.py:

# myApp/models.py 
from django.db import models 

class MyModel(models.Model): 
    field = models.CharField(max_length=255) 

और यही वह है। अब Django अपने डेटाबेस का प्रबंधन करने के लिए, कमांड प्रॉम्प्ट में हमारे/स्टैंडअलोन निर्देशिका पर जाएँ और चलाएँ:

manage.py sql MyApp 
+0

कृपया नई या अलग जानकारी के साथ http://stackoverflow.com/questions/302651/use-only-some-parts-of-django अपडेट करें। कृपया अपना उत्तर अपने प्रश्न के उस संस्करण में जोड़ें। –

+1

मेरे मामले में, इसे काम करने की आवश्यकता है (python2.7), मुझे '(" myApp ") 'to' (" myApp ",) 'को बदलने की आवश्यकता है, मुझे शीर्ष स्तर की निर्देशिका को sys.path में जोड़ने की भी आवश्यकता है '। इसके अतिरिक्त, 'settings.py' खाली हो सकता है (मेरे लिए काम किया गया) - कनेक्शन जानकारी डुप्लिकेट करने की आवश्यकता नहीं है। – Nikita

संबंधित मुद्दे