2009-05-09 26 views
36

क्या किसी को SQL सर्वर डेटाबेस बैक एंड के साथ Django एप्लिकेशन को तैनात करने के साथ हालिया अनुभव मिला है? हमारे कार्यस्थल को SQL सर्वर में भारी निवेश किया जाता है और यदि इसके लिए पर्याप्त रूप से विकसित बैक एंड नहीं है तो Django का समर्थन नहीं करेगा।उत्पादन में Django के साथ एसक्यूएल सर्वर का उपयोग

मुझे mssql.django-pyodbc और django-mssql से अनौपचारिक रूप से समर्थित बैक सिरों के बारे में पता है। दोनों परियोजनाओं में केवल एक व्यक्ति योगदान देता है जो चिंता का विषय है हालांकि योगदान कुछ हद तक नियमित प्रतीत होता है।

क्या SQL सर्वर के लिए कोई अन्य पिछला सिरों है जो अच्छी तरह से समर्थित हैं? क्या मैंने यहां उल्लेख किया है कि उत्पादन के लिए 'पर्याप्त पर्याप्त' है? आपके अनुभव क्या हैं?

उत्तर

19

जैसा कि कहा गया है, django-pyodbc जाने का एक अच्छा तरीका है। PyodBC शायद पाइथन के लिए सबसे परिपक्व SQL सर्वर लाइब्रेरी है।

एकमात्र चीज जिसमें आपको समस्या हो सकती है वह यह है कि pyodbc संग्रहित प्रक्रियाओं का बहुत अच्छा समर्थन नहीं करता है (आप उन्हें कॉल कर सकते हैं, लेकिन आपके पास परिणाम प्राप्त करने का कोई तरीका नहीं है)। आप उन्हें pymssql का उपयोग करके कॉल कर सकते हैं, लेकिन यदि संभव हो तो मैं इसे से बचूंगा क्योंकि यह मानक डीबी-एपीआई इंटरफ़ेस का समर्थन नहीं करता है और यह परिवर्तनों के अधीन हो सकता है। यदि आपको ऐसा करने की ज़रूरत है, तो आपकी सबसे अच्छी शर्त adodbapi सीधे उपयोग करना है (इसमें पाइथन Win32 पैकेज शामिल है, जिसे आप शायद किसी भी तरह से इंस्टॉल करना समाप्त कर देंगे)।

+0

'adodbapi' के लिए धन्यवाद - यह मेरे लिए एक नया था। –

+0

django-mssql adodbapi का एक कांटा का उपयोग करता है और संग्रहित प्रक्रियाओं का समर्थन करता है। – Manfre

+2

आप SQLServer संग्रहीत प्रक्रियाओं से उन्हें इस तरह कॉल करके परिणाम प्राप्त कर सकते हैं: 'cursor.execute ('DECLARE @results int; EXEC @ results = spMyProc; SELECT @results')' –

1

अभी तक इसे उत्पादन में उपयोग नहीं किया है, लेकिन django-mssql के साथ मेरे प्रारंभिक अनुभव काफी ठोस हैं। आपको केवल पाइथन Win32 एक्सटेंशन की आवश्यकता है और अपने पायथन पथ पर sqlserver_ado मॉड्यूल प्राप्त करने के लिए। वहां से, आप sql_server.pyodbc का उपयोग अपने DATABASE_ENGINE के रूप में करें। अब तक मैंने कुछ भी याद नहीं किया है, लेकिन मैंने अभी तक पूरी तरह से टक्कर नहीं ली है।

4

हम हमारी कंपनी में उत्पादन में django-mssql का उपयोग कर रहे हैं। हम भी mssql का उपयोग कर एक मौजूदा प्रणाली थी। मेरे लिए व्यक्तिगत रूप से यह अब तक का सबसे अच्छा डिजाइन निर्णय था क्योंकि मेरी उत्पादकता नाटकीय रूप से बढ़ी है कि मैं django का उपयोग कर सकता हूं।

मैंने एक पैच सबमिट किया लेकिन जब मैंने django-mssql का उपयोग करना शुरू किया और एक या दो सप्ताह का परीक्षण किया। तब से (अक्टूबर 2008) हम अपने सिस्टम को django पर चलाते हैं और यह ठोस चलता है। मैंने pyodbc भी कोशिश की लेकिन मुझे ज्यादा पसंद नहीं आया।

हम एक मरम्मत प्रणाली चला रहे हैं जहां सभी लेनदेन इस प्रणाली के माध्यम से 40 भारी उपयोगकर्ता चलाते हैं। यदि आपके पास और प्रश्न हैं तो मुझे बताएं।

+0

क्या django-mssql django के किसी विशेष संस्करण से जुड़ा हुआ है? –

+7

django-mssql को django को विंडोज़ पर चलाने की आवश्यकता है। अगर कोई लिनक्स पर django चला रहा है तो क्या करें? –

+0

@ पॉल, मेरे पास एक मौजूदा सिबेज डीबी है जो मैं Django को केवल चुनिंदा रिपोर्टिंग के लिए कनेक्ट करना चाहता हूं। क्या मैं django-mssql के साथ सीधे एक डीएसएन से कनेक्ट कर सकता हूं? – toasteez

4

मैंने देखा है इतने सारे लोग विंडोज पर django_mssql इंस्टॉल करने के बाद त्रुटि मिलती है:

 
django.core.exceptions.ImproperlyConfigured: 'sqlserver_ado' isn't an available database backend. 
Try using django.db.backends.XXX, where XXX is one of: 
    'dummy', 'mysql', 'oracle', 'postgresql_psycopg2', 'sqlite3' 
Error was: No module named sqlserver_ado.base 

समाधान निम्न प्लग-इन इंस्टॉल है:

http://sourceforge.net/projects/pywin32/

+1

मुझे अभी यह सटीक त्रुटि मिल रही है, लिंक अब मान्य नहीं है, क्या आप जानते हैं कि मैं प्लगइन कहां प्राप्त कर सकता हूं? –

+1

@ डेविडजहानलिउ: वेब संग्रह के अनुसार वह पायथन Win32 एक्सटेंशन है। यह http://sourceforge.net/projects/pywin32/ पर ले जाया गया। – SaeX

5

इन दिनों

  • django-mssql: परिणामस्वरूप त्रुटि में "कोई भी टाइप नहीं करने योग्य टाइप करें" ./manage.py migrate
  • avidal/django-pyodbc: अनियमित।
    • django-pyodbc: द्वारा बदल दिया गया अजगर 3
    • django-pyodbc-azure के लिए कोई समर्थन: अब तक मेरे लिए काम करता
      • संपादित करें: unmaintained होने के लिए लगता है। issue 125 दायर की स्थिति
      • संपादित करें: रखरखाव से जवाब मिला। अप-टू-डेट Django 2.0 शीघ्र ही

संपादित साथ बनाया जाएगा: यहाँ पैकेज संस्करणों

Django==1.11.6 
django-mssql==1.8 
pyodbc==4.0.19 
django-pyodbc==1.1.1 
django-pyodbc-azure==1.11.0.0 
+1

यह Django और आपके द्वारा परीक्षण की जाने वाली पुस्तकालयों के संस्करण प्रदान करने में सहायक होगा, क्योंकि यह जानकारी जल्दी से पुरानी हो सकती है। –

1

हैं यहाँ इस सवाल का एक "आधुनिक" इस सवाल का जवाब है। मैंने एक उत्पादन उबंटू 16.04 सर्वर पर Django 1.11 को सफलतापूर्वक तैनात किया जो किसी अन्य सर्वर पर चल रहे एमएस एसक्यूएल सर्वर 2017 से कनेक्ट होता है।

पहले, देशी एमएस ODBC ड्राइवर "ODBC ड्राइवर 17 एसक्यूएल सर्वर के लिए" स्थापित करें:

# https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server#ubuntu-1404-1604-and-1710 
sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list 
apt-get update 
ACCEPT_EULA=Y apt-get install msodbcsql 
apt-get install unixodbc-dev 

# test you can actually get to port 1433 on the server that is running MS SQL: 
nc -z -v -w5 host.where.sql.server.is.running.com 1433 

# add /opt/mssql-tools/bin to your PATH in .bash_profile, e.g.: 
# PATH="$HOME/bin:$HOME/.local/bin:/opt/mssql-tools/bin:$PATH" 
# source ~/.bash_profile 
# now, test that you can actually connect to MS SQL Server: 
sqlcmd -S host.where.sql.server.is.running.com -U db_username -P db_password 

दूसरा, सुनिश्चित करें कि आप pip install इन मॉड्यूल:

# https://github.com/michiya/django-pyodbc-azure 
django-pyodbc-azure==1.11.9.0 

# https://github.com/mkleehammer/pyodbc/wiki 
pyodbc==4.0.22 

तीसरा, डेटाबेस प्रविष्टि को संशोधित आपके Django settings.py:

DATABASES = { 
    'default': { 
     'ENGINE': 'sql_server.pyodbc', 
     'NAME': 'db_name', 
     'USER': 'db_username', 
     'PASSWORD': 'db_password', 
     'HOST': 'host.where.sql.server.is.running.com', 
     'PORT': '1433', 
     'OPTIONS': { 
      'driver': 'ODBC Driver 17 for SQL Server', 
     }, 
    }, 
} 

मैं टी छोड़ रहा हूँ वह मेरी बाकी कॉन्फ़िगरेशन (nginx, Gunicorn, Django REST Framework, आदि), लेकिन यह इस उत्तर के दायरे से बाहर है।

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